Por que os cronjobs estão sendo executados no momento errado?

10

Eu tenho a configuração do cronjobs para ser executada diariamente no meu servidor Ubuntu.

por exemplo. 0 4 * * * comando

Eles estão executando, exceto que estão executando 8 horas mais cedo. Ao configurar o servidor, ele foi originalmente definido para a hora UTC. Corri sudo dpkg-reconfigure tzdatapara definir o servidor como CST, que é de 6 horas atrás do UTC. Curiosamente, estou no PST, que fica 8 horas atrás do UTC, mas não vejo como o servidor poderia saber disso.

Se eu executar o comando date, ele mostra o horário no CST.

Deve haver algum lugar em que a hora esteja configurada incorretamente. Onde posso procurar resolver isso?

Matt McCormick
fonte

Respostas:

21

Você se lembrou de reiniciar o cron depois de alterar seu fuso horário? Caso contrário, o cron ainda poderá ter sua noção antiga do fuso horário a partir do momento em que foi originalmente iniciado.

Embora não seja estritamente necessário, geralmente sugiro reiniciar uma máquina após alterar o fuso horário - o fuso horário de um servidor nunca deve mudar (ou pelo menos deve ser MUITO pouco frequente) e isso garante que todos os programas no servidor tenham sido reiniciados e conhece a mudança :-)

voretaq7
fonte
Não, eu não reiniciei. Eu fiz isso e vou esperar para ver se esse é o problema (que eu acho que pode ser).
Matt McCormick
Depois de reiniciar o serviço cron, agora ele é executado no mesmo horário que o fuso horário que defini usando tzdata. Obrigado.
Donny Kurnia
1
Notei que as entradas em / var / log / cron estavam mostrando a hora errada, mesmo depois de reiniciar o crond. Reiniciar o rsyslog corrigiu esse problema.
Zymhan 11/08
@WildVelociraptor Sim, o syslog também usará os dados antigos do fuso horário até ser reiniciado (por isso, o registro de data e hora será errado, mesmo que eles estejam sendo executados no momento certo). Qualquer outra coisa que seja longa e iniciada antes da alteração dos dados do fuso horário exibirá um comportamento semelhante, e é por isso que uma reinicialização geralmente é indicada.
precisa saber é o seguinte
6

Para mim, descobri que, quando executo o hwclockcomando, a hora era diferente de uma hora do que quando executava o datecomando. Para corrigir isso, você pode chamar o hwclock --systohcque sincronizará as duas vezes e executará os cronjobs no horário esperado.

ajon
fonte
No meu caso ambos datee hwclockrelatar o tempo idêntico, mas cron ainda não faz o que eu esperaria que ele.
unfa 9/08/18