- Quais são os 5 campos, em ordem?
- Minuto (0–59), Hora (0–23), Dia do mês (1–31), Mês (1–12), Dia da semana (0–6, onde 0 e 7 significam domingo). Eles são separados por espaços. Então '0 9 * * 1-5' quer dizer: minuto 0, hora 9, qualquer dia do mês, qualquer mês, dias da semana de segunda a sexta — ou seja, dias úteis às 9h.
- O que o asterisco (*) significa?
- Significa 'todo valor válido para este campo'. '* * * * *' é 'todo minuto de toda hora de todo dia' — a agenda mais agressiva que uma linha cron consegue expressar. A maioria dos campos que não importam para você deve ficar como '*'.
- O que é a sintaxe */N?
- Passo. '*/15' no campo de minuto quer dizer 'a cada 15 minutos' — nos minutos 0, 15, 30, 45. Você também pode usar passo dentro de um intervalo: '0-30/10' no campo de minuto quer dizer 'nos minutos 0, 10, 20, 30'. O passo precisa ser maior que 0.
- Dia do mês e dia da semana restritos ao mesmo tempo — o que acontece?
- O cron padrão trata os dois como OU, não E. '0 9 1 * 0' dispara às 9h no dia 1 de todo mês OU em todo domingo — o que valer naquele dia. Isso confunde muita gente. Se você quer um E estrito ('dia 1 do mês, mas só se for domingo'), a maioria dos agendadores não suporta isso direto — você teria que tratar dentro da própria tarefa.
- Posso usar nomes em vez de números para mês e dia da semana?
- Sim. 'jan' a 'dec' funcionam para meses; 'sun' a 'sat' para dias da semana. Então 'mon-fri' e '1-5' são idênticos no campo de dia da semana. Maiúsculas e minúsculas não importam. Alguns agendadores fora do padrão adicionam apelidos como '@hourly' ou '@daily' — eles não fazem parte do formato de 5 campos e esta ferramenta não os aceita.
- Qual o menor intervalo que o cron suporta?
- Um minuto. O cron não trabalha com segundos. Se você precisa de menos de um minuto, já saiu do território do cron e precisa de algo como uma fila de tarefas, um loop com setInterval num processo de longa duração ou uma função serverless acionada por um timer de maior resolução.
- Por que minha agenda dispara num horário estranho?
- Fuso horário. O crond do Linux usa o fuso local do sistema; o GitHub Actions e o Vercel Cron usam UTC; o Kubernetes CronJob usa UTC por padrão. A prévia aqui é sempre em UTC. Converta de cabeça se o seu agendador roda em outro fuso, ou — melhor — escreva sua linha cron em UTC e documente.
- Suporta cron de 6 campos com segundos (Quartz)?
- Não. Este gerador trabalha com o formato Unix padrão de 5 campos. O cron de 6 campos no estilo Quartz, com segundos no início, é uma sintaxe diferente (e incompatível) usada por alguns agendadores Java. Não cole uma expressão Quartz — ela vai falhar na validação.
- Minha expressão fica salva em algum lugar?
- Não. A leitura, a descrição e o cálculo das próximas execuções rodam no seu navegador. Nada é enviado ou registrado. Você copia a expressão cron e cola onde realmente precisa.
- Dia 30 em fevereiro — o que acontece?
- O cron é tolerante — ele só não dispara naquele mês. '0 0 30 * *' dispara no dia 30 de janeiro, março, abril, maio etc., mas pula fevereiro inteiro. A prévia das próximas execuções mostra isso. Se você escreveu '0 0 30 2 *' (só 30 de fevereiro), a prévia fica vazia porque essa data não existe.