Os trabalhos Cron são executados 1 hora fora, em total desacordo com os horários do sistema

9

Exemplo de problema:

* 9 * * * echo 9
* 10 * * * echo 10

O texto acima dispara um e-mail para o usuário a cada minuto, mas todas as respostas "9" acontecem das 10h às 10h59, enquanto as "10" chegam das 11h às 11h59. .

Executando um trabalho de

* * * * * /bin/date ; /bin/date -u

Retornou a data e hora esperadas (corretas). isso era verdade tanto para o UTC quanto para o horário local (America / Denver). Alterar esse trabalho para executar a cada minuto em uma hora específica resulta no deslocamento (os trabalhos solicitados a serem executados às 9 são executados às 10, etc etc).

Depuração atual que concluí:

Ok, isso é estranho. Talvez meu arquivo de fuso horário esteja de alguma forma bagunçado? Vamos verificar se

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

Eu verifiquei o relógio do hardware para ver se está desativado ou de alguma forma discorda das minhas configurações locais (execute 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 que está desligado por um segundo, mas isso não deve fazer com que meus trabalhos cron funcionem com uma hora de folga, certo?

Também tenho certeza do seguinte:

  • Meu fuso horário mudou recentemente? Não
  • Você tentou corrigir manualmente o fuso horário? sim
  • Você redefiniu o cron depois de corrigir o fuso horário? sim
  • Tenho certeza 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:

Ran 'hwclock --systohc', alterações não 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', pois esse arquivo não existe. A execução de um comando find na árvore / etc / para encontrar 'clock' confirma que não tenho nenhum arquivo com esse nome.

Verificado se alguma coisa que eu conheço definiu a variável CRON_TZ. Não está definido no nível do usuário nem no nível das raízes. Ter cron ecoá-los não dá saída.

jmurrayufo
fonte
1
O CRON_TZenv var está definido em algum lugar?
thrig
tente hwclock --systohcapenas por completude e adicione cat /etc/sysconfig/clockà pergunta?
steve
Adicionei as duas sugestões às minhas informações, infelizmente nenhuma delas forneceu muito valor. CRON_TZ não está definido em nenhum ambiente que eu possa ver. A ressincronização do hwclock deu os mesmos resultados de antes (verificado de qualquer maneira para verificar se ele mudou, não mudou) e não tenho um '/ etc / sysconfig / clock ' Arquivo.
jmurrayufo

Respostas:

1

Mais um lugar para procurar: o (s) script (s) de início na inicialização cronou o arquivo crontab do sistema da velha escola /etc/crontab. É possível que a variável de ambiente TZ seja definida, digamos, /etc/init.d/cronieou /lib/systemd/system/crond.service, não tenho certeza do que o Debian usa para o sistema init.

Vi algo assim quando tentei crondexecutar as coisas a cada duas horas:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondexecutou o script em horas ímpares. Suspeitei, mas nunca me provei, que isso tivesse a ver com uma confusão no horário de verão.

Bruce Ediger
fonte
/etc/init.d/cron está capturando o /etc/timezonearquivo. TZ = cat /etc/timezone. Esse arquivo parece estar correto (executou uma soma de verificação apenas para ter certeza de que é idêntico ao que deveria ser.). /lib/systemd/system/crond.service parece não querer modificar nenhuma variável TZ. Vou verificar a sugestão * / 2 para ver se estou vendo a mesma coisa.
precisa saber é o seguinte