Eu tentei eliminar muitos dos erros comuns,
garantindo que os PATHs estejam disponíveis para cron
existe uma linha final no final do arquivo crontab
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 horário,
* * * * * date >> date.txt
está fornecendo a mesma 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 tentei outros argumentos, esperava que fosse executado às 14h:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
ou
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
isso não funcionará mais. Parece que há um problema com o meu argumento da hora. Nada foi encontrado no /tmp/debug.log
arquivo também.
SOLUÇÃO:
Acabou que eu tenho que reiniciar o serviço cron depois de fazer alterações no TZ.
~/event.sh
tentar com/home/username/event.sh
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
e confirme quedate
mostra a hora esperada. Note que definir a variável de ambiente TZ de dentro do crontab pode não afetar o fuso horário como usado pelo cron daemon em si, mas vai afetar os processos lançados através de cron, por isso, se você definir TZ no seu crontab eu sugiro comentando-lo temporariamente e definindo o tempo usando fuso horário do relógio do sistema (provavelmente UTC se você está-boot único Linux, mas pode ser hora local) em seu lugar.Respostas:
Primeiro, as chances de você estar atingindo um bug que faz com que um campo seja considerado incorretamente parecem excepcionalmente baixas. É mais provável que seja um mal-entendido do que está acontecendo e do que o cron espera.
Nesse caso, descobrimos nos comentários à pergunta que provavelmente era um problema relacionado ao fuso horário. Para isso, você:
* * * * * date
ao crontabIsso força
date
a execução com a configuração de fuso horário do invocador, o que significa o daemon cron . Veja a saída; mostrará qual cron o fuso horário está usando internamente e, portanto, é altamente provável em qual fuso horário deseja seus campos de tempo. Se você tiver uma atribuição de TZ no crontab, é fácil que a atribuição de variável de ambiente de TZ seja transmitida para o comandos invocados, mas o cron também usa outro fuso horário . Ao comentar ou remover a atribuição TZ, você evita essa ambiguidade.Observe também que quaisquer alterações nas configurações globais do fuso horário do sistema (incluindo / etc / localtime) quase certamente requerem pelo menos uma reinicialização do daemon cron e, possivelmente (embora improvável), uma reinicialização do sistema para ter efeito total. A edição da atribuição de TZ no crontab não deve exigir o recarregamento do daemon cron, pois deve detectar que o arquivo foi alterado e recarregá-lo automaticamente.
fonte