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?


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.


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.


5

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


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



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.


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.


crontab -l mostra o cron job quando eu faço o login como root. Tentei o log_file mas está vazio.
Anônimo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.