Visualizando em Português Ver em inglês

Explicador de expressões cron

Cole uma expressão cron e receba uma explicação em linguagem natural. Suporta os formatos padrão de 5 e 6 campos (com segundos).

Exemplos (clique para experimentar)

  1. Digite ou cole uma expressão cron no campo acima.
  2. Leia a explicação em português que aparece logo abaixo.
  3. Clique em qualquer exemplo para colocá-lo no campo e ver a decodificação.
  4. Corrija qualquer erro mostrado em vermelho e itere até a explicação corresponder à sua intenção.
O que ele faz?

O explicador recebe uma expressão cron Unix padrão (5 campos) ou uma expressão no estilo Quartz com segundos (6 campos) e devolve uma descrição em linguagem humana, por exemplo, "às 09:00, de segunda a sexta". Suporta os operadores comuns — *, ",", -, e / — além de meses nomeados (JAN-DEC) e dias da semana nomeados (SUN-SAT). O resultado é atualizado a cada tecla digitada, permitindo iterar rapidamente.

Exemplo

Um trabalho típico em horário comercial:

0 9 * * MON-FRI

Decodificado:

às 09:00, de segunda a sexta

Uma expressão Quartz de 6 campos mais específica, com segundos:

0 30 2 ? * MON

Decodificado (toda segunda-feira às 02:30:00).

Formato cron

┌───────── minuto (0 - 59)
│ ┌─────── hora (0 - 23)
│ │ ┌───── dia do mês (1 - 31)
│ │ │ ┌─── mês (1 - 12, ou JAN-DEC)
│ │ │ │ ┌─ dia da semana (0 - 6, ou SUN-SAT; 0 e 7 representam domingo)
│ │ │ │ │
* * * * *

Por que o cron "0 0 * * *" dispara à meia-noite UTC e não no meu horário local?

A maior parte dos problemas reais de cron cai em algumas armadilhas recorrentes:

  • Desvio de fuso horário. 0 0 * * * dispara à meia-noite no fuso horário do agendador. No Kubernetes CronJob e no GitHub Actions isso é UTC por padrão — defina spec.timeZone, ou converta a hora para UTC por conta própria.
  • Confusão entre 5 campos e 6 campos. Colar 0 0 9 * * MON-FRI (6 campos) num agendador de 5 campos faz o primeiro 0 ser lido como minuto e o 0 seguinte como hora, fazendo o job disparar à meia-noite, não às 09:00.
  • Dia do mês e dia da semana juntos. 0 0 15 * MON roda todo dia 15 e toda segunda-feira — não apenas quando o dia 15 cai numa segunda. É a semântica OR do Vixie-cron.
  • step não reinicia a cada deploy. */10 * * * * dispara em :00, :10, :20, :30, :40, :50 do relógio — não dez minutos depois do seu último deploy.
  • Usar ? em cron padrão. O curinga ? é uma extensão do Quartz. O Unix cron o rejeita — use * no lugar.
  • Dia da semana 0 vs 7. Ambos significam domingo no cron clássico, mas alguns parsers (BSD antigo) aceitam só 0. Se a portabilidade importa, use SUN.

Operadores

  • * — qualquer valor
  • , — lista de valores (ex.: MON,WED,FRI)
  • - — intervalo (ex.: 1-5)
  • / — valores step (ex.: */15 = a cada 15)
Perguntas frequentes

Qual a diferença entre cron de 5 e de 6 campos?

O cron POSIX padrão tem 5 campos: minuto, hora, dia do mês, mês, dia da semana. A variante de 6 campos adiciona um campo de segundos no início e é usada pelo Quartz, Spring @Scheduled e muitas bibliotecas cron do Node. Uma expressão de 6 campos como "0 0 9 * * MON-FRI" dispara às 9:00:00 em dias úteis, enquanto a de 5 campos "0 9 * * MON-FRI" dispara às 9:00.

Ele suporta extensões do Quartz como L, W e #?

Este explicador suporta o dialeto comum Unix / Vixie cron mais um campo inicial opcional de segundos. Tokens exclusivos do Quartz (L para último, W para dia útil, # para n-ésimo dia da semana, e o curinga ?) não fazem parte do cron padrão e não têm análise garantida. Se você depende deles, confira a expressão na documentação do agendador específico.

Por que 0 0 * * * dispara em um horário diferente do que espero?

Expressões cron não têm fuso horário. O job roda à meia-noite no fuso horário da máquina ou contêiner que executa o agendador. No Kubernetes CronJob, GitHub Actions e AWS EventBridge isso é UTC por padrão. Se quiser meia-noite local, configure o fuso horário do agendador explicitamente (spec.timeZone no CronJob, variável TZ, chave timezone no cron.yaml).

Posso combinar dia do mês e dia da semana?

No Vixie cron padrão, se dia do mês e dia da semana estiverem ambos restritos, o job dispara quando qualquer um casar — é um OR, não um AND. Portanto "0 0 15 * MON" roda no dia 15 de cada mês e em toda segunda-feira. O Quartz inverte isso e exige que um dos campos seja "?" para remover a ambiguidade.

Como funcionam valores step?

Um step usa a sintaxe intervalo/step. "*/15 * * * *" dispara a cada 15 minutos a partir de :00. "10-50/20" no campo de minutos dispara em :10, :30, :50. step não significa "a cada N a partir de agora" — as bordas estão sempre alinhadas ao início do intervalo, então step não anda com a hora atual.

Vocês salvam as expressões cron que eu testo aqui?

Não. Não guardamos nenhum registro do que você digita. Tudo que você cola ou experimenta é descartado ao fechar ou atualizar a página — sem logs, sem analytics sobre os agendamentos em que você trabalha. Se quiser confirmar, basta olhar nas ferramentas de desenvolvedor do seu navegador.