crontab às vezes não funciona

0

Estou tentando executar um script via crontab, mas alguns scripts funcionam, enquanto outros não. Por que isso acontece?

username@here> crontab -l
00 13 * * * csh -c /home/apps/bin/jobnumberone.pl
00 18 * * * csh_cmd /home/apps/bin/forcestartjob.pl job_a
5 22 * * 1-5 csh_cmd /home/apps/bin/forcestartjob.pl job_b
5 1 * * 1-5 /home/apps/bin/forcestartjob.pl job_c
5 1 * * 1-5 /home/apps/test/write_to_file.sh

Meu write_to_file.sh simplesmente imprime a hora atual em um arquivo test1.txt . Quando eu verifico test1.txt , o time stamp correto é mostrado, o que sugere que eu tenho permissão para modificar o crontab e pelo menos um dos eventos crontab está sendo executado na hora correta. (Sim, eu tenho a linha extra no final do arquivo crontab.)

Além disso, posso executar diretamente /home/apps/bin/forcestartjob.pl job_c , mas quando tento executá-lo a partir do crontab ele não é executado. As permissões para execução parecem ser válidas:

username@here> ls -l "/home/apps/bin/forcestartjob.pl"
-rwxr-xr-x   1 name     name     Jan 20 08:27 /home/apps/bin/forcestartjob.pl
    
por erad 28.01.2015 / 22:24

1 resposta

0

Solução: coloque o comando inteiro entre aspas duplas.

Dica: Verifique o mail porque ele mostrará um pequeno log. Ele estará em um diretório como /var/mail . Você pode usar cat /var/mail/username para exibir todas as mensagens.

Explicação: Meu problema era que meu script exigia um parâmetro passado como um argumento no comando. O crontab interpreta tudo separado por um espaço como um objeto separado, então meu comando teve um erro de execução. Usando aspas duplas, o crontab executará a coisa toda como um comando.

ex:

  • Original =

    csh -c /home/apps/bin/forcestartjob.pl job_b

  • Correto =

    csh -c "/home/apps/bin/forcestartjob.pl job_b"

Demorei um bom tempo para encontrar esse problema idiota, mas espero que isso ajude alguém no futuro.

    
por erad 30.01.2015 / 22:45