Gerador de Expressão Cron
Construa, analise e valide expressões crontab e Quartz. Cole qualquer linha ou macro @daily, expanda, veja o texto legível e as próximas execuções.
Como funcionam as expressões Cron: sintaxe, campos e exemplos
Um poderoso gerador online de expressão Cron que ajuda você a criar, analisar, validar e visualizar expressões de agendamento cron. Cole uma linha crontab ou Quartz existente (incluindo macros @), expanda-a no construtor visual, execute validação estrita por campo e veja as próximas execuções. Suporta formatos Unix/Linux (5 campos) e Quartz (6-7 campos).
O que é uma Expressão Cron?
Uma expressão cron é uma string que define um agendamento para tarefas automatizadas. Consiste em campos representando unidades de tempo:
- Minutos (0-59)
- Horas (0-23)
- Dia do Mês (1-31)
- Mês (1-12 ou JAN-DEZ)
- Dia da Semana (0-7 ou DOM-SAB, onde 0 e 7 = Domingo)
- Ano (opcional, para Quartz)
Caracteres especiais:
* (asterisco) - Qualquer valor
, (vírgula) - Separador de lista de valores
- (hífen) - Intervalo de valores
/ (barra) - Valores incrementais
? (interrogação) - Nenhum valor específico (apenas Quartz)
Exemplo: `0 9 * * 1-5` significa "Às 9:00, segunda a sexta"

O que significam as macros @daily, @hourly e @reboot?
A maioria das implementações de crontab (Vixie/cron, timers do systemd e muitos runners de CI) aceita macros de apelido no lugar dos cinco campos:
@yearly ou @annually = `0 0 1 1 *` (uma vez por ano, 1 de janeiro à meia-noite)
@monthly = `0 0 1 * *` (meia-noite do dia 1 de cada mês)
@weekly = `0 0 * * 0` (meia-noite todo domingo)
@daily ou @midnight = `0 0 * * *` (todo dia à meia-noite)
@hourly = `0 * * * *` (no início de cada hora)
@reboot = executa uma vez ao iniciar o sistema ou agendador (sem horário recorrente)
Cole qualquer uma dessas na caixa Analisar / Validar e a ferramenta expande a macro nos campos equivalentes, preenche o construtor e mostra as próximas execuções. @reboot não tem horário recorrente, então a prévia não se aplica. O Quartz NÃO suporta essas macros @; use-as apenas com cron Unix/Linux.
Por que meu cron roda em dias extras (dia do mês vs dia da semana)?
Esta é a pegadinha profissional mais comum. Quando AMBOS os campos dia do mês e dia da semana estão restritos (nenhum é *), o cron Unix padrão usa lógica OU, não E.
Exemplo: `0 9 15 * 1` NÃO significa "o dia 15 apenas se for segunda". Significa "às 9:00 no dia 15 OU em qualquer segunda-feira" - portanto roda muito mais do que o esperado.
Regras:
- Se apenas um dos dois campos estiver definido (o outro é *), só esse campo se aplica.
- Se AMBOS estiverem definidos, corresponde quando QUALQUER um corresponder (OU).
- Para um único critério, deixe o outro campo como * (Unix) ou ? (Quartz): use `0 9 15 * *` para o dia 15, ou `0 9 * * 1` para segundas.
Este gerador implementa a semântica OU correta, então as Próximas Execuções refletem exatamente o comportamento real do cron; cole sua expressão para confirmar antes de implantar.
