Como configurar um cron job para executar um executável a cada hora?

92

Preciso configurar um cron job que execute um executável compilado usando gcc uma vez a cada hora.

Eu loguei como root e digitei crontab -e

Então eu entrei no seguinte e salvei o arquivo.

0 * * * *  /path_to_executable

No entanto, o cron job não funciona.

Vejo que, quando digito /...path_to_executable, recebo uma falha de segmentação. Só consigo executar o executável a partir da pasta em que ele está localizado. Há alguma maneira de resolver esse problema?

Anônimo
fonte
8
É um título ruim. Você sabe como configurar o cron job; o que você quer saber é como fazer o comando funcionar.
David Thornley de
5
pertence ao superuser.com (não diretamente relacionado à programação)
Philipp
3
Título errado, mas foi assim que encontrei a solução.
Roman Holzner,
Seu executável provavelmente foi iniciado. Eu recomendo usar syslog (3) dentro dele (e pelo menos fazer uma mensagem de log no início, para ter certeza de que foi iniciado).
Basile Starynkevitch

Respostas:

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

deve funcionar, a menos que haja algo mais que precise ser configurado para que o programa seja executado.

joast
fonte
11
use && em vez de;, caso contrário, coisas interessantes podem acontecer (especialmente quando usado com rm)
Reactormonk
4
Você está certo. && é muito melhor se houver uma chance de que o alvo do cd não exista (por exemplo, se o diretório estiver em um servidor NFS que esteja inativo).
joast
Salve meu dia! Obrigado!
Chiakie de
Observe que você também precisa de um caminho absoluto (ou seja, do diretório raiz) afaik
drevicko
8

A solução para resolver isso é descobrir por que você está recebendo a falha de segmentação e consertar isso.

David Thornley
fonte
5

Você também pode usar o @hourlyinstante de0 * * * *

Marek Skiba
fonte
curioso com esta solução, em que minuto ele é executado significa @hourly em 0?
ojblass
1
@ojblass @hourlyé um sinônimo exato de 0 * * * *, não há diferença.
Marek Skiba
2

Você quis dizer que o executável falha ao ser executado, se invocado de qualquer outro diretório? Este é um bug no executável. Uma razão potencial pode ser o executável requer alguns libraires compartilhados da pasta instalada. Você pode verificar a variável de ambienteLD_LIBRARY_PATH

Jayan
fonte
2

Se você estiver usando o Ubuntu, você pode colocar um script shell em uma destas pastas: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyou /etc/cron.weekly.

Para mais detalhes, verifique esta postagem: /ubuntu/2368/how-do-i-set-up-a-cron-job

James Gentes
fonte
0

Como não pude executar o Cexecutável dessa forma, escrevi um simples shell scriptque faz o seguinte

cd /..path_to_shell_script
./c_executable_name

Na lista de tarefas cron, eu chamo o script de shell.

Anônimo
fonte
0

usar

path_to_exe >> log_file

para ver a saída do seu comando também os erros podem ser redirecionados com

path_to_exe &> log_file

você também pode usar

crontab -l

para verificar se suas edições foram salvas.

Jartieda
fonte
crontab -l mostra o cron job quando eu faço o login como root. Tentei o log_file mas está vazio.
Anônimo