2010-08-13 13 views
79

Necesito configurar un trabajo cron que ejecute un ejecutable compilado usando gcc una vez cada hora.¿Cómo configurar una tarea cron para ejecutar un ejecutable cada hora?

Me he registrado como usuario root y mecanografiadas crontab -e

Luego entré en el siguiente y se guarda el archivo.

0 * * * * /path_to_executable 

Sin embargo, el trabajo cron no funciona.

Veo que cuando escribo /...path_to_executable me sale un error de segmentación. Solo puedo ejecutar el archivo ejecutable desde la carpeta en la que se encuentra. ¿Hay alguna forma de solucionar este problema?

+5

Eso es un mal título. Usted sabe cómo configurar el trabajo cron; lo que quieres saber es cómo hacer que el comando funcione. –

+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. –

Respuesta

130
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.

+9

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

+2

Tiene razón. && es mucho mejor si existe la posibilidad de que el destino del CD no exista (por ejemplo, si el directorio está en un servidor NFS que está desactivado). – joast

-1

uso

path_to_exe >> log_file 

para ver la salida del comando también errores pueden ser redirigidos con

path_to_exe &> log_file 

también se puede utilizar

crontab -l

para comprobar que su las ediciones se guardan

+0

crontab -l muestra el trabajo cron cuando inicio sesión como root. Intenté el log_file pero está vacío. – Anonymous

1

Como no podía ejecutar el ejecutable C de esa manera, me escribió un simple shell script que hace lo siguiente

cd /..path_to_shell_script 
./c_executable_name 

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

1

¿Quisiste 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 el ejecutable requiere algunos libraires compartidos de la carpeta instalada. Puede verificar la variable de entorno LD_LIBRARY_PATH

4

La forma correcta de resolver esto es averiguar por qué está recibiendo la falla de segmentación y solucionarlo.

3

También puede utilizar @hourly instante de 0 * * * *

+0

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

+1

@ojblass '@ hourly' es un sinónimo exacto de' 0 * * * * ', no hay diferencia. –

Cuestiones relacionadas