Explicador de Cron — leia o agendamento antes de fazer o deploy
Uma expressão cron é densa por natureza: cinco ou seis campos separados por espaço decidem quando um backup roda, quando um relatório é enviado ou quando um job de reprocessamento entra em produção. Ler0 0 1 * 1 de cabeça e acertar o que ela faz é mais difícil do que parece — e o custo do erro só aparece depois, em produção. Esta ferramenta traduz a expressão para português e projeta as próximas execuções reais, tudo no seu navegador.
Como usar
- Cole ou digite a expressão no campo — a explicação aparece enquanto você digita.
- Confira a tabela de campos para ver exatamente quais valores cada posição está casando.
- Leia as próximas execuções com a contagem relativa ao lado. Se a primeira data não bate com o que você esperava, a expressão está errada.
- Use os exemplos como ponto de partida para os agendamentos mais comuns.
Os campos de uma expressão cron
| Posição | Campo | Intervalo |
|---|---|---|
| 1 (só em 6 campos) | Segundo | 0–59 |
| 2 | Minuto | 0–59 |
| 3 | Hora | 0–23 |
| 4 | Dia do mês | 1–31 |
| 5 | Mês | 1–12 ou JAN–DEC |
| 6 | Dia da semana | 0–7 ou SUN–SAT (0 e 7 = domingo) |
Sintaxe aceita em cada campo
*— qualquer valor?— o mesmo que*(usado pelo Quartz nos campos de dia)5— um valor exato1,15,30— uma lista de valores1-5— um intervalo contínuo*/15— a cada 15 unidades, a partir do início do intervalo10-30/5— passo dentro de um intervaloMON-FRI,JAN,JUL— nomes em vez de números
Unix (5 campos) versus Spring e Quartz (6 campos)
Esta é a armadilha que mais gera incidente. O crontab do Unix trabalha com resolução de minuto e usa cinco campos. O @Scheduled do Spring e o Quartz acrescentam um campo de segundos na frente, totalizando seis. Copiar uma expressão de um blog sobre crontab direto para uma anotação@Scheduled desloca todos os campos em uma posição: o que era o minuto vira o segundo, e o job passa a rodar de hora em hora em vez de uma vez por dia. A ferramenta identifica qual dos dois formatos você digitou e avisa quando interpreta a expressão como seis campos.
A regra de OU entre dia do mês e dia da semana
Quando ambos os campos de dia são diferentes de *, o cron combina os dois comOU, não com E. A expressão 0 0 1 * 1 não significa "toda primeira segunda-feira do mês": ela dispara no dia 1 de cada mês e também em toda segunda-feira. Para restringir de verdade, deixe um dos dois campos como * e faça a checagem adicional no código do job.
Fuso horário: onde o agendamento realmente roda
O cron não tem fuso próprio — ele usa o do processo que o executa. Um container em UTC, um servidor emAmerica/Sao_Paulo e o seu notebook produzem três resultados diferentes para a mesma expressão. A simulação desta página usa o fuso do seu navegador, exibido acima da lista; compare com o fuso do ambiente de produção (no Spring, o atributo zone de @Scheduled) antes de considerar o agendamento correto.
Atalhos
@yearly/@annually—0 0 1 1 *@monthly—0 0 1 * *@weekly—0 0 * * 0@daily/@midnight—0 0 * * *@hourly—0 * * * *@reboot— na inicialização do sistema (sem horário futuro previsível)
Tudo roda no seu navegador
A expressão não é enviada para servidor nenhum. Toda a análise e a projeção de datas acontecem localmente, o que importa quando a expressão vem de um arquivo de configuração de produção.