O que uma expressão cron significa
Uma expressão cron padrão tem cinco campos separados por espaços: minuto, hora, dia do mês, mês e dia da semana. Um asterisco significa qualquer valor, a vírgula separa uma lista (1,15), o hífen marca um intervalo (9-17) e a barra define um passo (*/15 é a cada 15 minutos). Assim, 30 2 * * 1-5 roda às 2:30 da madrugada, de segunda a sexta.
Cole qualquer expressão e a ferramenta descreve o agendamento numa frase, mostra cada campo e calcula as próximas dez execuções. Atalhos como @daily e @hourly também são reconhecidos. Se algo estiver errado, a mensagem diz o campo e a posição em vez de um erro de sintaxe vago.
Armadilhas que pegam até quem tem experiência
Quando o dia do mês e o dia da semana estão definidos ao mesmo tempo, o cron clássico roda nos dias que atendem a qualquer um dos dois, não aos dois: 0 0 13 * 5 roda em todo dia 13 e em toda sexta-feira. Se um dos dois campos começa com asterisco, como em */2, os dois precisam bater. A explicação avisa sempre que isso acontece.
O cron usa o fuso horário da máquina em que roda. Um job às 2:30 não roda na noite em que os relógios são adiantados em muitos países, e um job à 1:30 pode encontrar a mesma hora duas vezes quando os relógios são atrasados. Escolha o fuso do seu servidor na lista de execuções para ver exatamente quais dias são afetados. Meses sem o dia 31 são simplesmente pulados.
Padrão, com segundos e Quartz
O crontab do Linux, os CronJobs do Kubernetes e o GitHub Actions usam a forma de cinco campos. Algumas bibliotecas acrescentam um campo de segundos na frente. O Quartz, usado por muitos agendadores Java, tem segundos, um ano opcional, numera os dias da semana de 1 a 7 começando pelo domingo e exige ? em um dos campos de dia. Ele também acrescenta L para o último dia, W para o dia útil mais próximo e # para a enésima ocorrência de um dia da semana no mês. Escolha a sintaxe no topo; ao trocar, a expressão é convertida quando possível.