Analisador de Expressões Cron e Próximas Execuções

Analisa uma expressão cron (minuto hora dia mês dia da semana) e mostra o agendamento em linguagem simples. Suporta passos, intervalos e listas, e calcula as próximas 5 execuções. Útil para ler um crontab ou o "schedule" do GitHub Actions.

Sintaxe da expressão cron (5 campos)

Uma expressão cron tem 5 campos separados por espaço, da esquerda para a direita: minuto, hora, dia do mês, mês e dia da semana. Cada campo aceita os caracteres especiais abaixo.

Posição Campo Valores permitidos
1 Minuto 0-59
2 Hora 0-23
3 Dia do mês 1-31
4 Mês 1-12
5 Dia da semana 0-7

O dia da semana costuma ser 0 = domingo a 6 = sábado, mas esta ferramenta também aceita 7 como alias de domingo, usado por algumas implementações de cron (é tratado igual ao 0).

Cada campo aceita "*" (qualquer valor), listas separadas por vírgula (1,15,30), intervalos com hífen (1-5) e passos com barra (*/15, 1-30/5), podendo ser livremente combinados.

Padrões cron comuns

Expressão cron Significado
* * * * * Executa a cada minuto.
*/5 * * * * Executa a cada 5 minutos.
0 * * * * Executa uma vez por hora, no minuto 0.
0 0 * * * Executa todos os dias à meia-noite (00:00).
0 9 * * 1-5 Executa às 9h nos dias úteis (segunda a sexta).
0 0 1 * * Executa à meia-noite no dia 1 de cada mês.
0 0 1 1 * Executa à meia-noite em 1º de janeiro de cada ano.
*/15 9-17 * * 1-5 Executa a cada 15 minutos entre 9h e 17h nos dias úteis.

Dicas

  • Os campos podem combinar livremente listas com vírgula, intervalos com hífen e passos com barra, como em "*/15 9-17 * * 1-5".
  • O dia da semana costuma ser 0-6 (domingo a sábado), mas esta ferramenta também aceita o 7 como alias comum de domingo em algumas implementações de cron.
  • Se tanto o dia do mês quanto o dia da semana estiverem restritos (diferentes de "*"), o cron padrão os trata como uma condição OR: a tarefa executa se qualquer um dos dois for satisfeito.
  • O gatilho "schedule" do GitHub Actions usa a mesma sintaxe cron de 5 campos desta ferramenta, então também serve para conferir exatamente quando um workflow será executado.
  • O horário real de execução depende do fuso horário configurado no servidor, por isso vale a pena conferir também a hora atual do servidor depois de editar um crontab.

Perguntas frequentes

Sim. A especificação padrão do cron usa 0 para domingo, mas algumas implementações (como o Vixie cron) também aceitam 7 como notação alternativa para domingo. Esta ferramenta interpreta ambos como domingo.

Não é uma questão de prioridade, e sim uma condição OR. Quando tanto o dia do mês quanto o dia da semana estão restritos (diferentes de "*"), a tarefa executa em qualquer dia que satisfaça uma das duas condições. Se apenas um campo estiver restrito, só essa condição vale.

O formato básico de 5 campos (minuto hora dia mês dia da semana) é o mesmo. A principal diferença é que os agendamentos do GitHub Actions são sempre avaliados em UTC, e a execução real pode atrasar de alguns minutos a dezenas de minutos, diferente do crontab de um servidor.

Sim, passos (um valor inicial com barra, ou */intervalo) podem ser usados em qualquer um dos cinco campos. Ainda assim, em campos com intervalo pequeno, como mês ou dia da semana, as combinações práticas são limitadas.
ツールくん

Curiosidade — Meio século de cron

Diz-se que o nome "cron" vem de Chronos, a palavra grega para tempo, e ele é o agendador de tarefas clássico desde os primórdios do UNIX, na década de 1970. Sua sintaxe compacta de cinco campos consegue expressar desde "a cada minuto" até "uma data e hora específicas uma vez por ano", e continua amplamente usada quase meio século depois.

Hoje, essa mesma sintaxe cron de 5 campos é usada não só nos crontabs de servidores Linux, mas também em diversas ferramentas de CI/CD e plataformas de contêineres, como GitHub Actions, GitLab CI e os CronJobs do Kubernetes. É um exemplo marcante de uma sintaxe criada na era UNIX que continua prosperando, sem mudanças, em ambientes cloud-native.

Um dos pontos mais confusos da sintaxe cron é o comportamento quando dia do mês e dia da semana são definidos juntos. É tentador presumir uma condição AND (que ambos sejam satisfeitos), mas a especificação real é uma condição OR (que qualquer um dos dois seja satisfeito), o que costuma causar execuções mais frequentes do que o esperado.

→ Ver todas as curiosidades