Ferramentas de desenvolvedor · Gerador Crontab
Cron e horário de verão: por que um trabalho 02:30 pode pular ou ser executado duas vezes
· Por que é importante
cron fusos horários horário de verão
Duas vezes por ano, o relógio de parede salta e um cron job agendado na lacuna ou na sobreposição se comporta de forma inesperada. Esta postagem explica o que os crons derivados do Vixie fazem, o que outros fazem e como programar em torno disso.
Um candidato de pré-visualização ausente pode ocorrer quando a zona selecionada não tem esse horário de parede
A hora diária do relógio de parede pode estar ausente em uma data em que um fuso horário selecionado avance seus relógios. ToolAcre representa esse caso retornando nenhum instante para o minuto local inexistente e ignorando-o na lista de próxima execução. A expressão permanece válida; um candidato de calendário simplesmente não pode ser convertido em um instante real naquela zona.
Este comportamento é implementado em `wallClockToEpoch`, que converte uma data e hora local proposta, formata o resultado de volta na mesma zona e compara cada componente. Uma incompatibilidade retorna nulo. `nextRuns` ignora candidatos nulos e continua sua pesquisa, evitando que um horário próximo fabricado apareça como se correspondesse exatamente ao cronograma.
Os dois eventos - o avanço da primavera que se afasta uma hora e o retrocesso do outono que se repete
As mudanças de relógio criam dois casos conceituais: uma lacuna para frente com tempos de parede que nunca ocorrem e uma sobreposição para trás onde alguns rótulos ocorrem mais de uma vez. O repositório possui testes para manter uma hora local diária durante uma mudança futura e para omitir um horário de primavera inexistente. Ele não contém um conjunto completo de testes de políticas de sobreposição.
Esse limite de evidência é importante porque as implementações do escalonador podem fazer escolhas distintas. Este artigo descreve o algoritmo de visualização do navegador, não o comportamento do daemon universal. Antes de confiar em uma tarefa recorrente durante uma transição de relógio, leia e teste o agendador real no host de destino, em vez de promover uma visualização em uma promessa de execução.
ToolAcre omite horários locais inexistentes; ele não modela todas as políticas daemon derivadas do Vixie
A pasta de trabalho afirmava que determinados daemons derivados do Vixie executam tarefas ignoradas após um salto e suprimem duplicatas. ToolAcre não faz nada em seu código de visualização: ele omite um candidato cujos componentes locais não podem fazer ida e volta. Nenhum pacote daemon é invocado e nenhuma política de atualização é modelada. Essas alegações operacionais são, portanto, corrigidas em vez de repetidas.
O exemplo testado de Londres procura 01:30 próximo à mudança de 2026 de março. Como esse minuto local não existe na data de transição, os dias retornados são as seguintes datas válidas. Isso prova o comportamento da lista da própria rota. Ele não estabelece o que um processo cron instalado separadamente faz com uma linha já salva.
O comportamento de agendamento curinga em daemons externos está fora da evidência do repositório
As estrelas são expandidas em todos os valores permitidos pelo analisador, mas a conversão posterior do relógio de parede ainda decide se uma determinada data e hora é mapeada para um instante. ToolAcre não possui uma regra de daemon externo separada para “trabalhos curinga”. Todos os candidatos passam pela mesma pesquisa de calendário e código de conversão de zona.
As descrições permanecem puramente gramaticais: `* * * * *` é lido a cada minuto, enquanto um campo de minuto escalonado recebe palavras em etapas. A frase não narra a política de transição. Use a lista da próxima execução para os exemplos computados da ferramenta e não infira uma garantia de atualização, nova tentativa ou supressão de duplicatas apenas a partir da prosa.
Outras implementações não são inferidas desta visualização do navegador
A implementação da zona depende de dados `Intl.DateTimeFormat` expostos pelo navegador ou pelo tempo de execução do Node. ToolAcre valida um nome de zona IANA fornecido, oferece a lista suportada do mecanismo quando disponível e inclui UTC. Ele não inspeciona BusyBox, orquestradores de contêineres ou produtos cron de nuvem.
Quando outro agendador discordar, trate isso como uma questão de dialeto e tempo de execução. Registre sua versão, configuração de zona e comportamento de transição observado. A visualização do navegador ainda é útil como uma comparação transparente, mas seu código não pode responder qual política outro serviço aplica ou se esse serviço tenta novamente o trabalho perdido.
Exemplo resolvido: escolha um horário de funcionamento e inspecione os candidatos computados de ToolAcre
Um método mais seguro é selecionar a zona de implantação, inserir a expressão diária proposta e inspecionar as datas próximas à próxima transição conhecida naquele ambiente. Se um candidato obrigatório estiver ausente, escolha outro horário de funcionamento ou uma política do agendador que o destino documente explicitamente. Execute novamente a visualização após alterar a hora.
A fonte inclui uma predefinição em 02:30, mas uma predefinição é um exemplo, não uma recomendação universal. A sua validade depende do calendário e zona selecionados. A janela de cinco resultados de ToolAcre pode não abranger uma transição distante, portanto, escolha um contexto inicial adequado nos testes ao auditar o comportamento da implementação.
A seleção de zona faz parte desta visualização e é discutida aqui apenas como comportamento da ferramenta
Ao contrário da separação da pasta de trabalho, o tratamento de zonas faz parte diretamente da visualização desta ferramenta. O painel pergunta “Mostrar próximas execuções” e avisa que a máquina que executa o cron pode usar uma zona diferente da do leitor. A escolha de uma zona altera os instantes resultantes, preservando os campos do relógio de parede da expressão.
A seleção configura apenas o cálculo do navegador. Ele não escreve uma diretiva de fuso horário, atualiza um servidor ou incorpora a escolha na expressão copiada. Preserve a zona pretendida na documentação de implantação adjacente e, em seguida, configure o agendador real por meio de mecanismos comprovados para esse ambiente.
Takeaway: visualização na zona pretendida sem tratar a lista como garantia de execução
Uma lista de próxima execução é uma saída de modelo de cinco campos, um instante inicial, aritmética de calendário e dados de zona do navegador. É valioso para detectar horários inexistentes e mudanças acidentais de horário. Não permanece nem um rastreamento do daemon nem uma evidência de que um comando foi executado.
Use a visualização para identificar tempos de parede arriscados e, em seguida, verifique o agendador de destino no limite de transição. A promessa defensável de ToolAcre é limitada: os empregos diários permanecem no horário local selecionado quando esse horário existe e os candidatos locais inexistentes são omitidos. Tudo além disso pertence ao sistema implantado.