GeradoresOnline

Como ler e escrever uma expressão cron

Aprenda os 5 campos do cron, os caracteres especiais, exemplos comuns e as pegadinhas, como a regra do dia do mês com o dia da semana.

Por Equipe L9 · Publicado em 23/09/2026 · 4 min de leitura

O cron é o agendador de tarefas clássico dos sistemas Unix e Linux: você descreve quando um comando deve rodar usando uma expressão curta, e o sistema cuida do resto. A sintaxe é compacta e cheia de detalhes que só aparecem na primeira vez que um job roda no horário errado. Este guia ensina a ler e escrever expressões cron e lista as pegadinhas mais comuns.

Os cinco campos

Uma expressão cron padrão tem cinco campos separados por espaço:

┌───────── minuto           (0–59)
│ ┌─────── hora             (0–23)
│ │ ┌───── dia do mês       (1–31)
│ │ │ ┌─── mês              (1–12 ou JAN–DEC)
│ │ │ │ ┌─ dia da semana    (0–7 ou SUN–SAT; 0 e 7 são domingo)
│ │ │ │ │
* * * * *  comando a executar

A tarefa dispara quando o horário atual satisfaz todos os campos. Um asterisco significa "qualquer valor".

Caracteres especiais

  • *: qualquer valor daquele campo.
  • ,: lista de valores. 1,15 no dia do mês significa dias 1 e 15.
  • -: intervalo. 1-5 no dia da semana significa de segunda a sexta.
  • /: passo. */15 no minuto significa a cada 15 minutos (0, 15, 30, 45).

Exemplos comuns

*/5 * * * *       a cada 5 minutos
0 * * * *         no início de cada hora
0 9 * * 1-5       às 9h00, de segunda a sexta
30 2 1 * *        às 2h30 do dia 1 de cada mês
0 0 * * 0         à meia-noite de todo domingo
15 14 1,15 * *    às 14h15 nos dias 1 e 15
0 8-18/2 * * *    a cada 2 horas, das 8h às 18h (8, 10, 12, 14, 16, 18)

Se quiser conferir o que uma expressão faz, cole-a no tradutor de expressão cron, que descreve o agendamento em português.

Atalhos

Muitas implementações aceitam apelidos como @hourly, @daily, @weekly, @monthly, @yearly e @reboot (na inicialização). Eles são extensões e não estão presentes em todos os agendadores, então confira a documentação do seu ambiente antes de depender deles.

Pegadinhas que causam bugs reais

1. Dia do mês e dia da semana juntos funcionam como "OU"

Quando os dois campos são restritos (nenhum é *), a maioria dos crons executa a tarefa se qualquer um dos dois combinar. Assim, 0 0 13 * 5 não roda "só na sexta-feira 13": roda em todo dia 13 e em toda sexta-feira. Para obter o efeito de "E", é preciso filtrar dentro do próprio comando.

2. O passo não é contínuo

A expressão */7 * * * * dispara nos minutos 0, 7, 14, 21, 28, 35, 42, 49 e 56 e depois reinicia em 0 na hora seguinte. O intervalo entre 56 e 0 é de apenas 4 minutos, não 7. Passos só dividem de forma uniforme quando o valor divide o tamanho do campo (5, 10, 15, 20, 30 para minutos).

3. Fuso horário e horário de verão

O cron usa o fuso do sistema. Em locais com horário de verão, um job marcado para um horário que "não existe" na virada (por exemplo, 2h30 quando o relógio pula de 2h para 3h) pode não rodar, e um marcado para um horário que se repete pode rodar duas vezes. Servidores configurados em UTC evitam o problema, e o conversor de fuso horário ajuda a converter o horário desejado.

4. O caractere % é especial no crontab

Dentro de uma linha de crontab, o sinal % é interpretado como quebra de linha. Um comando como date +%Y-%m-%d precisa ter cada % escapado com barra invertida (\%) ou ser movido para um script.

5. Ambiente mínimo

O cron executa comandos com um ambiente reduzido: PATH curto, sem as variáveis do seu shell de login. Um comando que funciona no terminal pode falhar no cron por não encontrar o executável. Use caminhos completos e defina as variáveis necessárias no script.

6. Execuções que se sobrepõem

Se uma tarefa demorar mais que o intervalo entre execuções, duas instâncias podem rodar ao mesmo tempo. Proteja jobs longos com um bloqueio, como o utilitário flock.

Variações de outras plataformas

Nem toda "expressão cron" é igual à do crontab tradicional. Bibliotecas como Quartz e Spring costumam usar seis ou sete campos, acrescentando segundos (e, às vezes, ano) e adotando caracteres como ?. Serviços de nuvem têm suas próprias variações. Antes de copiar uma expressão de um lugar para outro, confirme quantos campos e quais símbolos a ferramenta de destino aceita. Se o agendamento depender de comparar datas em segundos, o guia Timestamp Unix e o problema do ano 2038 também pode ser útil.

Ferramentas relacionadas

Continue lendo

Gostou das ferramentas? Ajude a manter o site no ar: apoiar via Pix · Sobre · Contato · Política de Privacidade