Exemplo de problema:
* 9 * * * echo 9
* 10 * * * echo 10
O acima irá disparar um e-mail para o usuário a cada minuto, mas todas as respostas "9" acontecerão às 10h -> 10h59, enquanto os "10" chegarão às 11h00-> 11h59 .
Executando um trabalho de
* * * * * /bin/date ; /bin/date -u
Retornou a data e hora esperadas (corretas). isso era verdade tanto para UTC quanto para a hora local (América/Denver). Alterar este trabalho para ser executado a cada minuto em uma hora específica resulta no deslocamento (trabalhos instruídos para serem executados às 9, executados às 10, etc.).
Depuração atual que concluí:
Ok, isso é estranho. Talvez meu arquivo de fuso horário esteja de alguma forma confuso? Vamos verificar isso
diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical
Verifiquei o relógio do hardware para ver se está desligado ou de alguma forma discorda das minhas configurações locais (executado como root).
date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT -0.204171 seconds
Parece estar atrasado por um segundo, mas isso não deve fazer com que meus cron jobs sejam executados uma hora inteira fora do cronograma, certo?
Também tenho certeza do seguinte:
- Meu fuso horário mudou recentemente?Não
- Você tentou corrigir manualmente o fuso horário mesmo assim?Sim
- Você redefiniu o cron depois de corrigir o fuso horário?Sim
- Certifiquei-me de que o serviço cron foi reiniciado?Sim
- Eu reiniciei o serviço cron?Sim
- Você tem certeza de que o cron foi reiniciado?100% de certeza que o Cron foi reiniciado
Outras informações potencialmente relevantes:
Executando o Debian.
cat /etc/debian_version
8.6
Kernel Atual
uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux
Depuração atualizada:
Executei 'hwclock --systohc', sem alterações perceptíveis no comportamento. Executei este comando para verificar
date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT -0.875328 seconds
Não consigo executar 'cat /etc/sysconfig/clock' porque este arquivo não existe. A execução de um comando find na árvore /etc/ para localizar 'clock' confirma que não tenho nenhum arquivo com esse nome lá.
Verifiquei se algo que eu saiba definiu a variável CRON_TZ. Não é definido no nível do usuário, nem no nível raiz. Fazer com que o cron faça eco deles não dá saída.
Responder1
Mais um lugar para procurar: o(s) script(s) de inicialização para cron
, ou o arquivo crontab do sistema antigo da escola /etc/crontab
. É possível que a variável de ambiente TZ seja definida, digamos, /etc/init.d/cronie
ou /lib/systemd/system/crond.service
, não tenho certeza do que o Debian usa para o sistema init.
Eu vi algo assim quando tentei executar crond
as coisas a cada duas horas:
0 */2 * * * /opt/dbms/rainstor/archiving/ama_term
crond
executou o script em horas ímpares. Suspeitei, mas nunca provei a mim mesmo, que isso tinha a ver com uma confusão no horário de verão.