A crond lida com o horário de verão com uma mudança de 1 hora?

16

No final de semana passado, tivemos que mudar o horário das 02:00 às 03:00.

Pergunta: O que aconteceria se houvesse um cronjob às 02:30?

crond é uma solução muito antiga para agendamento, provavelmente deve lidar com isso, mas não sei como.

LoukiosValentine79
fonte

Respostas:

18

Provavelmente depende da implementação do cron, mas o popular cron Vixie afirma no manual:

O cron então acorda a cada minuto, examinando todos os crontabs armazenados, verificando cada comando para ver se ele deve ser executado no minuto atual.

e

Considerações especiais existem quando o relógio é alterado por menos de 3 horas, por exemplo, no início e no final do horário de verão. Se o tempo avançou, os trabalhos que teriam sido executados no tempo ignorado serão executados logo após a alteração. Por outro lado, se o tempo retroceder em menos de 3 horas, os trabalhos que caírem no tempo repetido não serão executados novamente.

Somente trabalhos executados em um horário específico (não especificado como @hourly, nem com '*' no especificador de hora ou minuto) são afetados. Os trabalhos especificados com curingas são executados com base no novo horário imediatamente.

Como a alteração no horário de verão era inferior a três horas, seu programa seria executado logo após as 03:00

Não tenho certeza se esse é um comportamento específico do cron do Vixie, lembro-me de que foi assim que meu PDP-11 funcionou nos anos 80, mas não tenho certeza.

Anthon
fonte
2
Uau, conhecimento dos anos 80 - Tiremos o chapéu!
Isaac
regra de ouro: uma vez por ano, seus crons nesse intervalo de horas não serão executados. uma vez por ano, seus crons funcionarão duas vezes. corolário: isso nem sempre é verdade. relacionados: pare de usar fusos horários locais!
precisa saber é o seguinte
@ tedder42 forneça referências, suas reivindicações contradizem a documentação e o comportamento real do cron.
Anthon
Esse caso anedótico faz referência às 2 da manhã e às 3 da manhã e não tem relevância para a pergunta (que se refere às 14:30) da tarde. Suas referências podem ser interessantes (antigas), não estão alinhadas com a minha experiência. E rodar um servidor sem fuso horário tem seus próprios problemas.
Anthon
2

A melhor solução é fazer o computador funcionar com o relógio de hardware definido como UTC, (Horário Universal Coordenado), AKA GMT ou Zulu Time e alterar apenas a maneira como a hora é exibida, definindo o fuso horário local para permitir o horário de verão. hora de assumir.

No SUSE Linux, e provavelmente na maioria dos outros, se o Sistema de relógio de hardware -> Ambiente -> Relógio -> HWCLOCK estiver definido como UTC com o sinalizador -u e seu fuso horário estiver definido onde você está, o sistema exibirá automaticamente os horários locais com correções de horário de verão para você.

Isso tem várias vantagens:

  • Você nunca precisará ajustar manualmente o relógio para alterações no horário de verão
  • As guias CRON serão armazenadas e executadas nos horários UTC
  • Se um arquivo, por exemplo, um log, for gravado às 01:30 antes do final do horário de verão e outro às 01:20 após o final do horário de verão, esse arquivo ainda será "Mais novo" que o outro porque os registros de data e hora do arquivo serão UTC e traduzido para exibição com base no fuso horário atual no momento da exibição.

Para mais informações, digite man hwclockum terminal.

Steve Barnes
fonte
2
Um pequeno detalhe. O UTC não é "Constante de tempo universal". Meios UTC Tempo Universal Coordenado
fpmurphy