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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top