O que é uma expressão cron?
Cron é um agendador de tarefas baseado em tempo integrado aos sistemas Unix/Linux. Uma expressão cron é a sintaxe que diz ao cron quando executar uma tarefa.
Você já viu: 0 0 * * *. Significa "à meia-noite, todo dia." Mas assim que você vai além do básico, a sintaxe cron fica complicada — 5 campos, segundos opcionais, diferenças entre plataformas e caracteres especiais que a maioria copia e cola sem entender.
Este guia esclarece tudo.
Os 5 (ou 6) campos
O cron padrão usa 5 campos separados por espaços:
┌──────────── minuto (0–59)
│ ┌────────── hora (0–23)
│ │ ┌──────── dia do mês (1–31)
│ │ │ ┌────── mês (1–12)
│ │ │ │ ┌──── dia da semana (0–7, 0 e 7 = domingo)
│ │ │ │ │
* * * * *
Alguns sistemas (AWS EventBridge, Spring, Quartz) adicionam um campo de segundos no início, totalizando 6 campos. Verifique sua plataforma.
Caracteres especiais
| Caractere | Significado | Exemplo |
|---|---|---|
* | Todos os valores | * * * * * = a cada minuto |
, | Múltiplos valores | 0 9,17 * * * = 9h e 17h |
- | Intervalo | 0 9-17 * * * = a cada hora das 9h às 17h |
/ | Passo | */15 * * * * = a cada 15 minutos |
L | Último | 0 0 L * * = último dia do mês (apenas Quartz) |
? | Sem valor | 0 0 ? * MON = segundas, qualquer dia do mês (Quartz) |
Expressões cron comuns
A cada minuto
* * * * *
A cada 5 minutos
*/5 * * * *
A cada hora, em ponto
0 * * * *
Todo dia à meia-noite
0 0 * * *
Todo dia às 9h
0 9 * * *
Toda segunda-feira às 9h
0 9 * * 1
Todo dia útil (seg–sex) às 8h
0 8 * * 1-5
Todo fim de semana ao meio-dia
0 12 * * 0,6
Primeiro dia de cada mês à meia-noite
0 0 1 * *
A cada trimestre (jan, abr, jul, out) à meia-noite
0 0 1 1,4,7,10 *
A cada 30 minutos entre 9h e 17h em dias úteis
*/30 9-17 * * 1-5
As armadilhas
"A cada 2 horas" é 0 */2 * * *, não */2 * * * *
*/2 * * * * significa a cada 2 minutos. O passo se aplica ao campo em que está.
Domingo é 0 e 7
No cron padrão, 0 e 7 são ambos domingo. Evite ambiguidade — use 0 de forma consistente.
Dia do mês E dia da semana são OR, não AND
0 0 1 * 1 executa no dia 1 de cada mês E toda segunda-feira — não apenas nas segundas que caem no dia 1. Se você quer "a primeira segunda do mês", isso requer lógica de script fora do cron.
Fusos horários
O cron executa no fuso horário local do servidor, a menos que configurado de outra forma. Uma tarefa em 0 9 * * * num servidor UTC executa às 9h UTC — o que pode ser 2h ou 23h no seu fuso horário.
Sempre verifique:
timedatectl # mostra o fuso horário atual no Linux
Atalhos nomeados (não padrão mas amplamente suportados)
| Atalho | Equivalente | Significado |
|---|---|---|
@yearly | 0 0 1 1 * | Uma vez por ano |
@monthly | 0 0 1 * * | Uma vez por mês |
@weekly | 0 0 * * 0 | Uma vez por semana (domingo) |
@daily | 0 0 * * * | Uma vez por dia (meia-noite) |
@hourly | 0 * * * * | Uma vez por hora |
@reboot | — | Na inicialização do sistema |
Gere e valide expressões cron
Cron Generator permite construir expressões visualmente — escolha o agendamento em linguagem simples, obtenha a expressão cron. Sem mais adivinhar se 0 9 * * 1-5 está correto.
Também funciona ao contrário: cole qualquer expressão cron e obtenha uma explicação em português de quando ela executa.
Cartão de referência rápida
# ┌──── minuto 0-59
# │ ┌─── hora 0-23
# │ │ ┌── dia 1-31
# │ │ │ ┌─ mês 1-12
# │ │ │ │ ┌ semana 0-7 (0=dom)
# │ │ │ │ │
* * * * * a cada minuto
0 * * * * a cada hora
0 0 * * * todo dia à meia-noite
0 9 * * 1 toda segunda às 9h
*/15 * * * * a cada 15 minutos
0 0 1 * * primeiro dia de cada mês