Gerador de Cron
Gera expressões cron (5 campos: minuto, hora, dia, mês, dia-da-semana) com presets comuns e descrição em linguagem natural.
Como funcionam os 5 campos?
São cinco campos no cron: minuto (0-59), hora (0-23), dia do mês (1-31), mês (1-12) e dia da semana (0-6, 0=dom). Em cada um cabem números, listas (1,2,3), faixas (1-5), passos (*/15) e o * (qualquer valor).
Na prática, 0 9 * * 1-5 dispara às 9h nos dias úteis, enquanto */15 * * * * roda a cada 15 minutos.
Comece pelos presets e ajuste o que precisar à mão.
Expressões cron em profundidade: sintaxe, variantes e agendamento real
Uma expressão cron é uma linguagem compacta baseada em tempo usada para descrever quando um job recorrente deve rodar. Introduzida na 7ª edição do Unix em meados da década de 1970, a sintaxe sobreviveu praticamente inalterada por meio século e hoje aparece em distribuições Linux, orquestradores de contêineres como Kubernetes, plataformas de CI como GitHub Actions e schedulers serverless como AWS EventBridge e Vercel Cron. Apesar da semelhança superficial, cada plataforma interpreta os mesmos cinco (ou seis, ou sete) números de uma forma ligeiramente diferente — e errar um dígito é a diferença entre um backup que roda às 3h da manhã e um que roda a cada minuto do dia.
Este gerador emite o formato Unix clássico. Abaixo você encontra uma referência completa de campos, operadores, strings especiais, diferenças de dialeto (Quartz, Spring, Kubernetes, GitHub Actions), exemplos comentados e as armadilhas de timezone/horário de verão que pegam até engenheiros experientes.
Os cinco campos do cron Unix padrão
Uma linha canônica do crontab tem cinco campos separados por espaços, lidos da esquerda para a direita:
┌──────── 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 = domingo)
│ │ │ │ │
* * * * * comando-a-executar
A expressão dispara quando todos os campos casam com o relógio atual — com uma exceção famosa descrita mais abaixo. Alguns schedulers acrescentam um sexto campo de segundos no início, e o Quartz acrescenta um sétimo campo de ano no final; os daemons de Linux e BSD operam apenas com resolução de um minuto.
Curingas, intervalos, listas e passos
*— qualquer valor válido (todo minuto, toda hora, etc.).a-b— intervalo inclusivo.9-17no campo de hora significa 9, 10, 11, 12, 13, 14, 15, 16, 17.a,b,c— lista discreta.0,15,30,45casa com os quartos de hora.*/n— passo de n unidades.*/5em minutos roda em 0, 5, 10, … 55.a-b/n— intervalo com passo.0-23/2em horas significa de duas em duas horas a partir da meia-noite.- Mês e dia-da-semana aceitam abreviações de três letras:
JAN-DEC,SUN-SAT. Os nomes ignoram maiúsculas/minúsculas, mas em algumas implementações não podem ser combinados em intervalos.
Strings de conveniência: @yearly, @monthly, @daily, @hourly, @reboot
O Vixie cron e a maioria dos seus descendentes modernos aceitam atalhos nomeados que se expandem em uma expressão completa de cinco campos:
@yearly (ou @annually) → 0 0 1 1 * meia-noite em 1º de janeiro
@monthly → 0 0 1 * * meia-noite no dia 1 de cada mês
@weekly → 0 0 * * 0 meia-noite de domingo
@daily (ou @midnight) → 0 0 * * * meia-noite, todo dia
@hourly → 0 * * * * no minuto 0 de cada hora
@reboot → ao iniciar o daemon cron (sem hora)
Observação: @reboot não é suportado pelo CronJob do Kubernetes, pelo GitHub Actions nem pelos systemd timers — é uma característica específica do daemon cron.
Diferenças de dialeto: Quartz, Spring, Kubernetes, GitHub Actions
A maior fonte de bugs em agendamentos é supor que todos os schedulers leem a mesma string da mesma forma. Referência rápida:
- Cron Unix / Vixie: 5 campos, dia-da-semana 0-7 (domingo é tanto 0 quanto 7), resolução de um minuto, semântica OR entre dia-do-mês e dia-da-semana.
- Quartz (Java): 6 ou 7 campos — segundos no início, ano opcional no fim. Dia-da-semana vai de 1 a 7, com domingo = 1. Suporta
L(last),W(dia útil mais próximo),#(n-ésima ocorrência) e?(nenhum valor específico). - Spring
@Scheduled: 6 campos (segundos + os 5 padrão). Domingo é 0 como no Unix, e não 1 como no Quartz — armadilha comum ao portar expressões. - Kubernetes CronJob: 5 campos padrão. Os horários são UTC a menos que você defina
.spec.timeZone(k8s 1.25+). PrefixosCRON_TZ=são rejeitados pela validação. - GitHub Actions: 5 campos padrão, apenas em UTC, sem parâmetro de timezone. O menor intervalo é de 5 minutos e períodos de alta carga podem atrasar ou pular execuções.
- AWS EventBridge: 6 campos (ano obrigatório), dia-da-semana 1-7 (domingo = 1), usa
?como o Quartz e não permite especificar dia-do-mês e dia-da-semana ao mesmo tempo.
Exemplos comentados
*/5 * * * * a cada 5 minutos
0 * * * * no minuto 0 de cada hora (em ponto)
30 2 * * * todo dia às 02:30
0 3 * * 1 toda segunda-feira às 03:00
0 0 1 * * meia-noite do dia 1º de cada mês
0 9-17 * * 1-5 a cada hora das 09:00 às 17:00, seg-sex
15 14 1 * * 14:15 do dia 1º de cada mês
0 22 * * 1-5 todo dia útil às 22:00
0 0 */2 * * meia-noite a cada dois dias
*/15 9-17 * * 1-5 a cada 15 min das 09:00-17:59, dias úteis
0 0 1 1 * uma vez por ano, 1º de janeiro à meia-noite
5 4 * * sun todo domingo às 04:05
Armadilhas: semântica OR, timezone e horário de verão
Dia-do-mês e dia-da-semana são combinados com OR, não com AND. A expressão 0 0 13 * 5 dispara no dia 13 de todo mês e em toda sexta-feira — não apenas em sextas-feiras dia 13. Para ter um AND real, restrinja um dos campos na expressão e cheque o outro dentro do seu script, ou use Quartz/AWS, que interpretam um valor literal junto com ? de outra forma.
Timezone. O cron do Linux respeita a variável TZ do sistema; é possível sobrescrever por crontab com a linha CRON_TZ=America/Sao_Paulo. O Kubernetes usa UTC por padrão. O GitHub Actions é UTC sem exceção — se você quer 09:00 em São Paulo (BRT, UTC-3), escreva 0 12 * * *.
Horário de verão. Quando o relógio adianta, os jobs da hora pulada normalmente se perdem; quando atrasa, os jobs da hora repetida podem rodar duas vezes. O Vixie cron moderno tenta evitar ambos os casos, mas o caminho mais seguro é agendar fora da janela entre 01:00 e 04:00 ou rodar em UTC.
O corpo do job. O cron executa comandos com um PATH mínimo e sem shell interativo. Sempre use caminhos absolutos para os binários e redirecione stdout/stderr (>> /var/log/job.log 2>&1) para que as falhas sejam depuráveis.
Onde rodar um agendamento
- crontab em um único host Linux —
crontab -epor usuário. - systemd timers — sintaxe de calendário (incompatível com cron) com logging melhor, grafo de dependências e persistência entre boots.
- Kubernetes CronJob — YAML declarativo, com política de concorrência e budget de retentativas.
- GitHub Actions
on.schedule— jobs disparados pelo CI, apenas em UTC e com granularidade mínima de 5 minutos. - Vercel Cron / Netlify Scheduled Functions — invocam um endpoint HTTPS a partir de um scheduler gerenciado.
- AWS EventBridge / GCP Cloud Scheduler — gatilhos nativos da nuvem com retry e fila de dead-letter.
Monte expressões cron com facilidade
Agendar tarefas no cron exige montar aquela sequência de cinco campos (minuto, hora, dia, mês e dia da semana) de sintaxe traiçoeira. Este gerador ajuda você a chegar na expressão certa e já traz presets para os agendamentos mais frequentes.
Comece por um modelo pronto (todo dia em tal hora, toda segunda, de hora em hora) ou ajuste campo a campo. Enquanto isso, a ferramenta descreve em texto o que aquela expressão vai fazer. Ler a explicação em português ao lado evita o clássico tropeço de agendar a tarefa para a hora errada.
A geração acontece no navegador, sem espera. É uma mão na roda para configurar crontabs, agendadores de CI ou qualquer sistema que use a sintaxe cron, dispensando decorar a ordem dos campos.
Perguntas frequentes
O cron consegue rodar jobs em frequência menor do que um minuto?
Qual a diferença entre 0 e * no campo de minuto?
Por que meu job rodou duas vezes?
O @reboot garante que meu job rode a cada boot?
Existe um jeito de testar uma expressão antes de colocar em produção?
Ferramentas Relacionadas
Editor de Expressão Cron
Interprete e construa expressões cron com descrição em português, próximas execuções e atalhos para as configurações mais usadas.
Cron Parser (descrever expressão)
Cole uma expressão cron e veja em texto natural quando ela vai disparar (ex: "todo dia às 9h" para `0 9 * * *`). Lista as próximas N execuções. Tudo no navegador.
Calculadora de Permissões Unix (chmod)
Calcule permissões Unix de forma visual. Marque leitura, escrita e execução para owner, group e others e obtenha o código octal (ex: 755) e a notação simbólica (ex: rwxr-xr-x).
Decodificador JWT
Decodifique e inspecione tokens JWT (JSON Web Tokens). Visualize o header, payload e verifique a expiração. Processado 100% no navegador — o token não sai do seu dispositivo.
Conversor de Case
Converta texto entre camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case, dot.case, Title Case e outros formatos com um clique. Ideal para renomear variáveis e campos de API.
docker-compose RabbitMQ
Gere um docker-compose pronto para RabbitMQ com a interface de gerenciamento habilitada, usuário, senha e portas. Suba seu broker de mensagens local na hora.