Crontab não acionado

1

Eu tenho um programa escrito em C com o OpenCV. Captura uma imagem da webcam e salva no disco com o nome dado como argumento. Eu quero acioná-lo a cada minuto, assim eu inseri a seguinte linha para crontab.

* * * * * /home/mustafa/Desktop/capture2/capture2 'date +\%y\%m\%d\%H\%M' >> /home/mustafa/Desktop/webcam.log

Este comando é executado como esperado quando eu o executo no console. Mas não é acionado por crontab.

Existe algum erro na minha sintaxe do crontab?

Edit: é Angström Linux

    
por mustafa 05.12.2011 / 11:24

3 respostas

1

Às vezes, os comandos dentro do script dependem da variável de ambiente PATH do usuário em execução.

Tente adicionar o PATH env var no início deste crontab. Isso também pode ter um problema com o shell adequado em uso. Especialmente em sistemas debian reais, o shell / bin / sh padrão é vinculado a / bin / dash e não a / bin / bash. Você pode consertar isso com o shebang correto em seu script ou alterar o SHELL env var para seus processos de crontab:

  SHELL=/bin/bash
  PATH=<Path Var of The Running user>

Veja também man 5 crontab para mais descrições.

    
por 05.12.2011 / 11:43
0

Para ativar o registro de erros especificamente para esta entrada do crontab, você pode redirecionar o erro para um arquivo.

* * * * * /home/mustafa/Desktop/capture2/capture2 'date +\%y\%m\%d\%H\%M' 1>>/home/mustafa/Desktop/webcam.log 2>>/home/mustafa/Desktop/error.log

1>>/home/mustafa/Desktop/webcam.log acrescenta a saída do script ao arquivo webcam.log

2>>/home/mustafa/Desktop/error.log acrescenta o erro dos scripts ao arquivo error.log

Algumas coisas que precisamos cuidar antes de executar um script no crontab

  • O usuário que tiver a entrada crontab para executar o script deve ter acesso a todos os arquivos que estão sendo usados pelo script, incluindo execute permissões ao arquivo de script. Para arquivos em que o script está sendo gravado / anexado, o usuário deve ter write permissões.

  • Todos os caminhos no arquivo de script devem ser caminhos absolutos. De preferência, defina variáveis no início do script que armazena o caminho para os arquivos.

Depois de ter verificado os dois pontos acima, tente executar o script usando o crontab e verifique se há erros no arquivo error.log . Dependendo de quais erros você tem lá, você pode fazer alterações apropriadas no seu script.

    
por 07.04.2014 / 08:59
0

Como sugerido por gelraen e uniomni em este tópico , tente adicionar uma nova linha ao final do seu crontab. Aparentemente, algumas implementações cron não pegam nada no crontab após o último caractere de nova linha. Acabei de ter esse problema em uma caixa do RedHat 6 e agora todos os meus trabalhos são executados como pretendido.

    
por 05.10.2016 / 18:13