Toolyard

O que é uma expressão cron?

Os cinco campos

Uma expressão cron são cinco campos separados por espaços que dizem a um agendador quando rodar uma tarefa:

Na ordem, da esquerda para a direita:

Minuto0-59
Hora0-23
Dia do mês1-31
Mês1-12
Dia da semana0-6 (domingo = 0)

A tarefa roda sempre que o horário atual coincide com todos os campos.

Caracteres especiais

  • * qualquer valor.
  • , uma lista: 1,15 é o dia 1 e o dia 15.
  • - um intervalo: 1-5 é de segunda a sexta no último campo.
  • / um passo: */10 no campo de minutos é a cada 10 minutos.

Agendamentos comuns

*/5 * * * *A cada 5 minutos
0 * * * *A cada hora cheia
0 0 * * *Todo dia à meia-noite
30 8 * * 1-5Às 08:30 nos dias úteis
0 0 1 * *À meia-noite do dia 1 de cada mês
0 3 * * 0Às 03:00 todo domingo

Cole qualquer expressão no Explicador de expressões cron para ler em palavras e ver as próximas execuções.

O que costuma confundir

  • Fuso horário: o cron usa o relógio do servidor, que muitas vezes está em UTC.
  • Dia do mês e dia da semana juntos: se os dois estiverem definidos, a tarefa roda quando qualquer um coincidir, não os dois.
  • Segundos: o cron padrão não tem campo de segundos. Alguns sistemas, como Quartz e Spring, acrescentam um no início, ficando com seis campos.

Expressões que não fazem o que parecem

ExpressãoA intençãoO que realmente roda
0 9 1-7 * 109:00 na primeira segunda-feira09:00 em cada dia de 1 a 7, e em toda segunda-feira
*/15 9-17 * * 1-5A cada 15 minutos, das 9 às 17Das 09:00 às 17:45 em dias úteis, incluindo a hora das 17
0 0 31 * *O último dia do mêsSó nos sete meses com 31 dias
0 0 29 2 *Uma vez por anoSó em anos bissextos

Para a primeira segunda-feira, rode nos dias 1 a 7 e confira o dia da semana dentro do script.

Atalhos

Muitas versões do cron aceitam apelidos: @hourly, @daily, @weekly, @monthly, @yearly e @reboot, que roda uma vez quando a máquina liga.

Horário de verão

Num servidor que segue a hora local, uma tarefa marcada entre 01:00 e 03:00 pode ser pulada na noite em que o relógio adianta, ou rodar duas vezes quando atrasa, dependendo da versão do cron. Marque tarefas importantes fora desse horário, ou use UTC no servidor.

Ferramentas deste guia

Mais guias