O trabalho Cron não inicia após uma alteração de fuso horário

8

Eu tentei eliminar muitos dos erros comuns,

  1. garantindo que os PATHs estejam disponíveis para o cron

  2. há uma linha final no final do arquivo crontab

  3. o fuso horário é configurado por:

    cd /etc
    cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
    

Executando date no bash, recebo:

Tue Sep 17 15:14:30 SGT 2013

Para verificar se o cron está usando o mesmo tempo,

* * * * * date >> date.txt

está dando a mesma saída de data em date.txt.

Este é o script que estou tentando executar:

event.sh :

#!/usr/bin/env bash
echo data > /root/data.txt

Usando crontab -e , a linha abaixo funciona,

* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

No entanto, quando eu tentei alguns outros argumentos, esperando que ele fosse executado em 2.50pm:

50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

ou

50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)

não funcionará mais. Parece que há um problema com meu argumento de hora. Nada pode ser encontrado no arquivo /tmp/debug.log .

SOLUÇÃO:

Descobri que tenho que reiniciar o serviço cron depois de fazer alterações na TZ.

    
por adsisco 17.09.2013 / 08:58

1 resposta

6
Primeiramente, as probabilidades de que você esteja atingindo um bug que faz com que um campo seja considerado incorretamente parece excepcionalmente baixo. É mais provável que seja um mal-entendido sobre o que está acontecendo e o que o cron espera.

Nesse caso, descobrimos nos comentários da pergunta que era muito provável que fosse um problema relacionado ao fuso horário. Para isso, você faria:

  • Adicione uma entrada como * * * * * date ao crontab
  • Remover (ou comentar) qualquer atribuição TZ do crontab

Isso força date a ser executado com a configuração de fuso horário do invocador, que significa o daemon do cron . Olhe a saída; mostrará que fuso horário o cron está usando internamente e, portanto, é altamente provável que fuso horário ele deseja que seus campos de tempo entrem. Se você tiver uma atribuição TZ no crontab, é facilmente possível que a atribuição da variável de ambiente TZ seja passada para o invocou comandos mas o próprio cron usa algum outro fuso horário . Ao comentar ou remover a tarefa do TZ, você evita essa ambiguidade.

Observe também que quaisquer alterações nas configurações de fuso horário global do sistema (incluindo, por exemplo, / etc / localtime) quase certamente exigirão pelo menos uma reinicialização do daemon cron e possivelmente (embora improvável) uma reinicialização do sistema para ter efeito total. Editar a atribuição TZ no crontab não deve requerer um recarregamento do daemon cron, pois ele deve detectar que o arquivo foi alterado e recarregá-lo automaticamente.

    
por 17.09.2013 / 10:39

Tags