Determine o problema com o CRON não executando

4

Como posso determinar problemas com os comandos% cron não executando o cron? Tenho scripts que enviam emails, posso executá-los manualmente via linha de comando e eles funcionam muito bem, mas nunca são processados pelo cron ....

O que posso fazer para depurar porque o cron não está sendo executado?

Tenho a sensação de que isso faz parte do problema ...

$ sudo /etc/init.d/crond start
sudo: /etc/init.d/crond: command not found
    
por Webnet 07.12.2010 / 15:37

4 respostas

3

Você tem algumas opções, não em uma ordem específica.

  • Execute o comando que você tem no crontab na linha de comando. Isso pode ser enganoso, pois muitas vezes isso funcionará para você, e a razão pela qual ele não está sendo executado no cron é uma variável de ambiente ausente, ou algo assim.

  • Adicione uma opção de saída à sua linha crontab, por exemplo:

    5 */2 * * * /usr/local/bin/do-stuff.sh >> /tmp/results.log;

  • Certifique-se de que o cron esteja realmente em execução.

  • Verifique seus arquivos de log do cron em busca de erros específicos.

por 07.12.2010 / 15:47
1

Além das respostas do @muffinista e do @brent, existem mais problemas esotéricos que você pode encontrar no Ubuntu

  • Você precisa de uma linha em branco no final do seu crontab.
  • O usuário deve estar em | não-em /etc/cron.allow|cron.deny (ou ter esses arquivos ausentes)
    • o usuário não precisa ser um membro do grupo crontab
  • o cron pode ignorar nomes de arquivos que não gosta em /etc/cron.d/ e diretórios similares.
    • adicione a opção '-l' do cron (impacto explicado mais em 'man run-parts')
  • o cron envia as entradas do crontab através de / bin / sh (por padrão), então coisas tão simples como essa falharão, mas funcionarão quando coladas no seu terminal / bin / bash

    0 * * * * echo hi >& /dev/null

    então mude o SHELL ou a sua sintaxe de redirecionamento!

Minha versão do Ubuntu ignora as configurações em / etc / defaults / cron, portanto, para aumentar o nível de log, você pode precisar executar o daemon do cron manualmente (cron -f -L 2).

    
por 07.03.2011 / 22:45
0

Em alguns casos recentes, isso ocorreu porque as pessoas editaram as coisas em /etc/crontab sem enviar o sinal de crond 1 (SIGHUP) para informar que deveria reler o arquivo /etc/crontab .

Tente

kill -1 $PID-OF-CROND

e veja se isso ajuda. Determinar o pid de crond é deixado como um exercício para você ;-) - até porque se você não consegue encontrá-lo, pode significar que o crond não está funcionando, e então você terá encontrado o seu problema!

    
por 07.12.2010 / 15:49
0

Se você estiver usando shellscript, as pessoas muitas vezes esquecem que os comandos que usam em seu script podem não estar no PATH do cron (por exemplo, algo em /opt ). Configure seu PATH adequadamente no início do script, conforme necessário. Para sh / bash, seria:

PATH=$PATH:/opt/something-1.0/bin

por exemplo

    
por 07.12.2010 / 17:23

Tags