Guias de Cron
Guias

Entendendo completamente Cron e fusos horários

UTC do servidor vs. horário local, especificação de TZ

A própria expressão cron não contém informação de fuso horário. O horário que a expressão indica segue o fuso horário do sistema em que o cron opera. Por isso, mesmo um mesmo 0 9 * * * executa em um horário real diferente dependendo do fuso horário do servidor.

Muitos servidores e contêineres têm o UTC como fuso horário padrão. A Coreia (KST) é UTC+9, portanto, se você agendar 0 0 * * * (meia-noite) em um servidor UTC, na prática ele executa às 9h no horário da Coreia. É muito comum agendar pensando no horário local e acabar com uma diferença de 9 horas.

Algumas implementações de cron permitem colocar uma linha como CRON_TZ=Asia/Seoul no topo do crontab para que a interpretação ocorra em um fuso horário específico. Em ambientes de contêiner, também se usa ajustar a variável de ambiente TZ da imagem ou o /etc/localtime para a região desejada. No entanto, o suporte varia de implementação para implementação, então é preciso verificar.

Em regiões com horário de verão (DST), nos dias em que o relógio é adiantado ou atrasado, um horário específico pode ser pulado ou aparecer duas vezes, de modo que tarefas agendadas nesse fuso podem ser perdidas ou duplicadas. Agendar tarefas importantes com base no UTC ajuda a evitar esses problemas.

Dica prática: pense na expressão em UTC e sempre confirme o fuso horário real do ambiente de implantação. A propósito, os próximos horários de execução que a ferramenta deste site exibe são baseados no fuso horário local do seu navegador, então use-os como referência comparando com o fuso horário do servidor.

Recursos

Coleção de agendamentos

Receitas para copiar e usar na hora

Guia de sintaxe

Os 5 campos e os caracteres especiais de relance

Macros e apelidos

Expressões abreviadas como @daily

Guias

Guias práticos para entender o cron de verdade e reduzir erros