O trabalho de Crontab não começa ... idéias?
Pergunta
Obrigado por me ajudar a definir meus trabalhos de Cron, Crontab tem sido realmente uma mina de ouro para mim.
Infelizmente, tenho um problema e não tenho idéia do que poderia ser ... basicamente, um trabalho não começa enquanto os empregos do vizinho. eu vou explicar
Esta é a minha lista de empregos Crontabs:
*/10 * * * * python /webapps/foo/manage.py fetch_articles
*/10 * * * * python /webapps/bar/manage.py fetch_books
Eu os escrevi como eles estão em um arquivo e os armazenei usando Crontab/Path/to/arquivo.
Verificado com Crontab -l e os empregos estão lá.
O estranho é que 1 deles é executado a cada 10 minutos normalmente ... mas o outro não. Tentei digitar o comando manualmente e funciona bem sem um problema.
Alguém tem sugestões?
A ajuda seria muito apreciada, obrigado pessoal.
Atualizar:
Eu estive nos arquivos de log do sistema e achei isso:
5 de março de 02:50:01 Locnost Cron [21652]: (raiz) cmd (python /webapps/foo/manage.py fetch_books)
Isso significa que Crontab está chamando o trabalho bem?
Obrigado por suas respostas, pessoal!
Corrigido! Muito obrigado a todos!!
O problema era que o script falhou silenciosamente, acredito que é devido à mudança de Python_Path devido a onde o script é chamado ... Tenho certeza de que tenho certeza.
Solução
Cron sempre corre em um ambiente diferente do que você pensa :-)
Eu sempre tenho meus cronjobs configurados como:
*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1
Para garantir que haja algo registrado que eu possa olhar.
Isso restringirá seu problema a qualquer:
- Cron, se o arquivo temp não aparecer; ou
- Seu script, se ele aparecer.
E, neste último caso, espero que haja alguma saída que você possa depurar. Caso contrário, coloque a saída lá.
Uma maneira de fazer isso é colocar:
set -x
Na parte superior do script, que fará com que todas as linhas sejam emitidas antes da execução. Todos os meus scripts tendem a começar:
#!/bin/bash
#set -x
Então, eu posso apenas descomentar essa segunda linha enquanto depurava.
Outras dicas
Da manpra de Crontab:
Bugs embora Cron exige que cada entrada em uma extremidade crontab em um personagem de nova linha, nem o comando crontab nem o daemon cron detectarão esse erro. Em vez disso, o Crontab parecerá carregar normalmente. No entanto, o comando nunca será executado. A melhor opção é garantir que seu Crontab tenha uma linha em branco no final.
(minha ênfase).
Eu acho que a resposta do ~ Unutbu provavelmente está correta se for o segundo trabalho que não estiver em execução.
No entanto, outra coisa a verificar é se /webapps/bar/manage.py
Requer acesso exclusivo a quaisquer recursos, por exemplo, soquetes de rede/tempfiles etc. Como você está iniciando 2 processos ao mesmo tempo, pode estar desencadeando uma condição de corrida.