Analisador de Expressões Cron

Analise expressões cron em descrições legíveis e visualize as próximas execuções agendadas

Experimente um exemplo

Expressão cron

minute hour day(month) month day(week)

Descrição legível

At 9:00 AM, Mon, Tue, Wed, Thu, Fri

Detalhamento dos campos

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

Próximas 10 execuções agendadas

12026-03-26 09:00:00
22026-03-27 09:00:00
32026-03-30 09:00:00
42026-03-31 09:00:00
52026-04-01 09:00:00
62026-04-02 09:00:00
72026-04-03 09:00:00
82026-04-06 09:00:00
92026-04-07 09:00:00
102026-04-08 09:00:00

O Que É a Análise de Expressões Cron?

Uma expressão cron é uma string de cinco campos separados por espaços que define um agendamento recorrente. O formato se originou no daemon cron do Unix, escrito por Ken Thompson para o Unix Version 7 em 1979. Cada campo representa uma unidade de tempo: minuto, hora, dia do mês, mês e dia da semana. Analisar uma expressão cron significa converter essa notação compacta em uma descrição legível e uma lista concreta dos próximos horários de execução.

O formato padrão de cinco campos é utilizado pelo crontab no Linux e no macOS, por plataformas de CI/CD como GitHub Actions e GitLab CI, por agendadores em nuvem como AWS EventBridge, Google Cloud Scheduler e Azure Functions, e por bibliotecas de agendamento em todas as principais linguagens de programação. Alguns sistemas estendem o formato para seis ou sete campos adicionando um campo de segundos ou de ano, mas o layout de cinco campos definido pelo POSIX continua sendo a base compartilhada por todas as implementações.

Analisar expressões cron manualmente é propenso a erros. A interação entre os campos cria agendamentos não óbvios: 0 9 1-7 * 1 não significa 'toda segunda-feira na primeira semana', mas sim 'do dia 1 ao 7 de todo mês OU qualquer segunda-feira'. Um analisador de cron elimina essa ambiguidade expandindo cada campo, aplicando as regras de combinação e produzindo os timestamps reais em que o job será executado.

Por Que Usar Este Analisador de Cron?

Ler uma expressão cron como 30 */6 1,15 * * em um arquivo de configuração e saber exatamente quando ela dispara exige cálculo mental em cinco campos. Este analisador faz esse trabalho instantaneamente.

Análise Instantânea
Digite ou cole uma expressão cron e veja imediatamente a descrição legível e as próximas 10 execuções agendadas. Sem botão de envio, sem recarregamento.
🔒
Processamento com Privacidade
Toda a análise é executada localmente no seu navegador. Suas expressões cron e dados de agendamento nunca saem do seu dispositivo.
📋
Detalhamento Campo a Campo
Cada um dos cinco campos é analisado e exibido individualmente, mostrando os valores resolvidos. Identifique rapidamente qual campo controla o agendamento.
🔄
Sem Cadastro Necessário
Abra a página e comece a analisar. Sem login, sem chave de API, sem instalação. Funciona em qualquer dispositivo com um navegador moderno.

Casos de Uso do Analisador Cron

Desenvolvedor Frontend
Verifique expressões cron em painéis administrativos e interfaces de agendamento antes de enviá-las ao backend. Confirme que o agendamento selecionado pelo usuário em um dropdown corresponde à string cron gerada pelo formulário.
Engenheiro Backend
Depure jobs agendados que disparam em horários inesperados. Cole a expressão cron da configuração do seu gerenciador de tarefas (Celery, Sidekiq, Quartz) e verifique se os próximos horários de execução correspondem ao esperado.
DevOps / SRE
Audite agendamentos cron em pipelines de CI/CD, Kubernetes CronJobs e configurações de agendadores em nuvem. Verifique se jobs de backup, renovações de certificados e scripts de limpeza estão programados corretamente antes de implantar.
Engenheiro de QA
Valide que as tarefas agendadas no ambiente de teste correspondem ao agendamento de produção. Detecte erros de off-by-one nos campos de mês ou dia da semana antes que causem execuções perdidas em produção.
Engenheiro de Dados
Verifique os gatilhos cron de pipelines ETL e jobs de sincronização de dados. Confirme que as janelas de extração não se sobrepõem e que as dependências downstream têm tempo suficiente de antecedência.
Estudante / Aprendiz
Aprenda a sintaxe cron experimentando diferentes expressões e vendo os resultados em tempo real. Desenvolva intuição sobre como curingas, intervalos e valores de passo interagem.

Referência de Sintaxe de Expressões Cron

Uma expressão cron padrão tem cinco campos separados por espaços. Cada campo aceita inteiros, curingas, intervalos, listas e valores de passo. A tabela abaixo mostra o intervalo permitido e os operadores de cada campo.

CampoIntervaloOperadoresDescrição
Minute0–59* , - /Minute within the hour
Hour0–23* , - /Hour of the day (24-hour)
Day (month)1–31* , - /Day of the month
Month1–12* , - /Month of the year (or JAN–DEC)
Day (week)0–6* , - /Day of the week (0 = Sunday, or SUN–SAT)

Quatro caracteres especiais controlam como os valores são combinados em cada campo:

CharNomeComportamento
*WildcardMatches every possible value in the field. * in the minute field means "every minute."
,ListSeparates individual values. 1,15 in the day field means "the 1st and 15th."
-RangeDefines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday."
/StepDefines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50."

Aqui estão expressões cron comuns que cobrem a maioria das necessidades de agendamento:

ExpressãoAgendamento
* * * * *Every minute
0 * * * *Every hour (at minute 0)
*/15 * * * *Every 15 minutes
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
30 2 * * 0Every Sunday at 2:30 AM
0 0 1 * *First day of every month at midnight
0 0 * * 1Every Monday at midnight
0 0 1 1 *January 1st at midnight (yearly)
0 */6 * * *Every 6 hours
5,35 * * * *At minute 5 and 35 of every hour
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, weekdays

Exemplos de Código

Como analisar expressões cron e calcular os próximos horários de execução nas linguagens mais populares:

JavaScript (Node.js)
import cronstrue from 'cronstrue';

// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"

cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"

// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';

const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC

// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
  console.log(interval.next().toString());
}
Python
from crontab import CronTab
from croniter import croniter
from datetime import datetime

# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run

# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
    print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps

# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)
Go
package main

import (
    "fmt"
    "time"
    "github.com/robfig/cron/v3"
)

func main() {
    // Parse a standard 5-field cron expression
    parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
    schedule, err := parser.Parse("0 9 * * 1-5")
    if err != nil {
        panic(err)
    }

    // Calculate the next 5 run times
    now := time.Now()
    for i := 0; i < 5; i++ {
        now = schedule.Next(now)
        fmt.Println(now)
    }
    // → next 5 weekday 09:00 timestamps
}
Bash (crontab)
# List current user's cron jobs
crontab -l

# Edit cron jobs interactively
crontab -e

# Add a job: run backup.sh every day at 2:30 AM
# (append to crontab via pipe)
(crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab -

# Check syntax with a dry-run parse (requires cronie or busybox)
# The system will reject invalid expressions when saving

# View cron logs on systemd-based Linux
journalctl -u cron --since "1 hour ago"

Perguntas Frequentes

Qual é a diferença entre expressões cron de 5 e 6 campos?
O formato cron padrão (POSIX) tem 5 campos: minuto, hora, dia-do-mês, mês, dia-da-semana. Ferramentas como Quartz Scheduler e Spring adicionam um campo de segundos no início, totalizando 6 campos. O AWS EventBridge usa 6 campos com um campo de ano no final. Este analisador suporta o formato padrão de 5 campos, compatível com crontab, GitHub Actions, Kubernetes CronJobs e a maioria das bibliotecas de agendamento.
Como o cron lida com dia-do-mês e dia-da-semana juntos?
Quando ambos os campos são restritos (não *), o cron usa lógica OR: o job é executado quando qualquer uma das condições for verdadeira. Por exemplo, 0 9 15 * 1 significa 'às 9h do dia 15 de todo mês OU em toda segunda-feira'. Essa é uma fonte comum de confusão. Se ambos os campos forem *, o job é executado todos os dias.
Qual fuso horário o cron usa?
O crontab tradicional usa o fuso horário local do sistema. O Kubernetes CronJobs usa por padrão o fuso do kube-controller-manager (geralmente UTC), mas aceita o campo opcional .spec.timeZone desde o Kubernetes 1.25. O AWS EventBridge e o Google Cloud Scheduler permitem especificar o fuso por agendamento. Sempre verifique qual fuso o seu agendador usa antes de implantar um job cron.
O cron consegue executar um job a cada 30 segundos?
O cron padrão de 5 campos não suporta agendamento sub-minuto. O menor intervalo é um minuto (*/1 ou *). Para executar algo a cada 30 segundos, você precisa de um cron de 6 campos com campo de segundos (Quartz, Spring), um script wrapper que aguarda 30 segundos e executa novamente, ou um mecanismo diferente, como temporizadores systemd com OnCalendar.
0 e 7 são equivalentes no campo dia-da-semana?
Na maioria das implementações cron, tanto 0 quanto 7 representam domingo. Essa convenção vem do cron Unix original. No entanto, alguns sistemas (Quartz) usam 1 para domingo e 7 para sábado. O POSIX define o intervalo como 0-6, onde 0 = domingo. Se o seu agendador aceitar nomes de dias (SUN, MON), prefira usá-los para evitar ambiguidade.
O que acontece se eu definir um dia-do-mês inexistente?
Se você agendar um job para o dia 31 (0 0 31 * *), ele não será executado nos meses com menos de 31 dias. O cron não transfere a execução para o mês seguinte. Fevereiro sempre será ignorado, assim como abril, junho, setembro e novembro. Para executar no último dia de cada mês, algumas implementações suportam o modificador L (0 0 L * *), mas o cron POSIX padrão não.
Como testar uma expressão cron antes de implantá-la?
Use um analisador online como este para ver os próximos horários de execução e verificar se o agendamento corresponde à sua intenção. Para validação em produção, a maioria das bibliotecas cron oferece uma função de cálculo do próximo horário: cron-parser em Node.js, croniter em Python, robfig/cron em Go. Execute a expressão por uma dessas bibliotecas na sua suite de testes para verificar os próximos N horários de execução antes de implantar.