¿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?

Anónimo
fuente
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.

joast
fuente
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.

David Thornley
fuente
5

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

Marek Skiba
fuente
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

Jayan
fuente
2

Si estás usando Ubuntu, se puede poner un script de shell en una de estas carpetas: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyo /etc/cron.weekly.

Para obtener más detalles, consulte esta publicación: /ubuntu/2368/how-do-i-set-up-a-cron-job

James Gentes
fuente
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.

Anónimo
fuente
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.

jartieda
fuente
crontab -l muestra el trabajo cron cuando inicio sesión como root. Probé el log_file pero está vacío.
Anónimo