¿Cómo configurar un trabajo cron para ejecutar un ejecutable cada hora?


94

Necesito configurar un trabajo cron que ejecute un ejecutable compilado usando gcc una vez cada hora.

Me conecté como root y escribí crontab -e

Luego ingresé lo siguiente y guardé el archivo.

0 * * * *  /path_to_executable

Sin embargo, el trabajo cron no funciona.

Veo que cuando escribo /...path_to_executableme sale un error de segmentación. Solo puedo ejecutar el ejecutable desde la carpeta en la que se encuentra. ¿Hay alguna manera de resolver este problema?


8
Ese es un mal título. Sabe cómo configurar el trabajo cron; lo que quiere saber es cómo hacer que funcione el comando.
David Thornley

5
pertenece a superuser.com (no está directamente relacionado con la programación)
Philipp

3
Título incorrecto, pero así es como encontré la solución.
Roman Holzner

Probablemente su ejecutable esté iniciado. Recomiendo usar syslog (3) dentro de él (y al menos hacer un mensaje de registro al inicio, para asegurarse de que se inicie).
Basile Starynkevitch

Respuestas:


159
0 * * * * cd folder_containing_exe && ./exe_name

debería funcionar a menos que haya algo más que deba configurarse para que se ejecute el programa.


11
use && en lugar de;, de lo contrario pueden suceder cosas interesantes (especialmente cuando se usa con rm)
Reactormonk

4
Tienes razón. && es mucho mejor si existe la posibilidad de que el objetivo del cd no exista (por ejemplo, si el directorio está en un servidor NFS que no funciona).
joast

¡Salva mi día! ¡Gracias!
Chiakie

Tenga en cuenta que también necesita una ruta absoluta (es decir, desde el directorio raíz) afaik
drevicko

8

La solución para resolver esto es averiguar por qué tiene la falla de segmentación y solucionarlo.


5

También puede utilizar @hourlyinstant of0 * * * *


curioso con esta solución ¿en qué minuto se ejecuta @hourly implica en 0?
ojblass

1
@ojblass @hourlyes un sinónimo exacto de 0 * * * *, no hay diferencia.
Marek Skiba

2

¿Quiso decir que el ejecutable no se ejecuta si se invoca desde cualquier otro directorio? Esto es más bien un error en el ejecutable. Una posible razón podría ser que el ejecutable requiera algunas bibliotecas compartidas de la carpeta instalada. Puede verificar la variable de entornoLD_LIBRARY_PATH



0

Como no pude ejecutar el Cejecutable de esa manera, escribí un simple shell scriptque hace lo siguiente

cd /..path_to_shell_script
./c_executable_name

En la lista de trabajos cron, llamo al script de shell.


0

utilizar

path_to_exe >> log_file

para ver el resultado de su comando, también los errores se pueden redirigir con

path_to_exe &> log_file

también puedes usar

crontab -l

para comprobar si se guardaron sus ediciones.


crontab -l muestra el trabajo cron cuando inicio sesión como root. Probé el log_file pero está vacío.
Anónimo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.