O que significa cada um dos cinco campos
Da esquerda para a direita: minuto, hora, dia do mês, mês e dia da semana. Então 0 9 * * 1 quer dizer minuto 0, hora 9, sem restrição de data nem de mês, e segunda-feira: toda segunda às nove da manhã.
O asterisco indica que o campo não tem restrição. Deixar aberto um dos primeiros campos faz a tarefa rodar muito mais do que se pretendia: * * * * * dispara a cada minuto. Um asterisco esquecido no campo do minuto dá 1440 execuções por dia.
Como ler os símbolos
1-5é a sequência de valores de 1 a 5.1,3,5são só esses três valores.*/15avança de quinze em quinze a partir do zero. No campo do minuto dá 0, 15, 30 e 45.9-17/2só salta dentro do intervalo indicado.- Dias e meses aceitam nomes:
MON-FRI,JAN,JUL.
No campo do dia da semana, 0 é domingo e 6 é sábado. Quase toda implementação também aceita 7 como domingo, então 0 e 7 apontam para o mesmo dia.
Quando dia do mês e dia da semana aparecem juntos
É aqui que a maioria tropeça. Quando o terceiro campo e o quinto estão os dois restritos, o cron roda nos dias que atendem a qualquer uma das condições, e não nos que atendem às duas.
0 0 1 * MON não é “o dia primeiro quando cai numa segunda”. É o dia primeiro do mês ou toda segunda-feira, o que dá umas cinco vezes por mês. Restrinja um dos campos e deixe o outro como asterisco para escapar disso.
Confira o fuso antes
Os horários mostrados aqui seguem o fuso do aparelho em que você está lendo. O cron de um servidor segue o fuso daquele servidor, então confirme qual é antes de publicar. Servidores em UTC são comuns, e uma tarefa pensada para as nove da manhã acaba rodando no meio da tarde.
Onde existe horário de verão, uma tarefa marcada na faixa que se desloca pode ser pulada ou rodar duas vezes no dia da virada. Tirá-la da faixa das duas da madrugada resolve.
Seis campos é outro dialeto
Algumas expressões trazem um campo de segundos na frente, totalizando seis. Essa é a convenção do Spring e do Quartz, e não é o que um crontab padrão lê. Esta ferramenta lê apenas cinco campos.
Colar uma expressão de seis campos num crontab desloca tudo em uma posição: o valor dos segundos é lido como minutos e o dos minutos como horas. Defina qual sintaxe o destino espera antes de copiar qualquer coisa.