Analisador Cron & Testador de Crontab

Analisador Cron & Testador de Crontab

Interprete expressões cron em linguagem natural legível. Inspecione próximas execuções em múltiplos fusos horários, valide sintaxe crontab e projete agendamentos futuros.

Predefinições de Agendamento
Contagem de Tokens5/5
MIN
*/5
HOUR
*
DOM
*
MON
*
DOW
*
Cadência do AgendamentoEvery 5 minutes past every hour.
Variáveis de Alta OrdemSeguro contra Sobrecarga
Tempo Estimado de Execução1 minutos
Pipeline de Execução Visual100% em Memória
LEX5 tokensASTMáscara de Bits (Bitmask)POSIXCleanRUNSafeSLOT10 saídas
Projeção Cronológica de Próximas Execuções(10 occurrences)
NºHorário Local PrevistoDia da SemanaContagem RegressivaJanela com JitterTimestamp ISO (UTC)
1Nov 03, 2026, 03:20Tuein 3m 17sexact2026-11-03T03:20:00.759Z
2Nov 03, 2026, 03:25Tuein 8m 17sexact2026-11-03T03:25:00.759Z
3Nov 03, 2026, 03:30Tuein 13m 17sexact2026-11-03T03:30:00.759Z
4Nov 03, 2026, 03:35Tuein 18m 17sexact2026-11-03T03:35:00.759Z
5Nov 03, 2026, 03:40Tuein 23m 17sexact2026-11-03T03:40:00.759Z
6Nov 03, 2026, 03:45Tuein 28m 17sexact2026-11-03T03:45:00.759Z
7Nov 03, 2026, 03:50Tuein 33m 17sexact2026-11-03T03:50:00.759Z
8Nov 03, 2026, 03:55Tuein 38m 17sexact2026-11-03T03:55:00.759Z
9Nov 03, 2026, 04:00Tuein 43m 17sexact2026-11-03T04:00:00.759Z
10Nov 03, 2026, 04:05Tuein 48m 17sexact2026-11-03T04:05:00.759Z
Métrica PrincipalAST Validada com Sucesso
Eficiência / CapacidadePadrão UNIX (5 Campos)
Saída Líquida10 SLOTS
Disparos Anuais Estimadosin 3m 17s
Intervalo Mínimo de Execução24 / 24 HRS
Status de Integridade AST100% Local
Referência técnica e guia de arquitetura

Testador de Crontab & Expressão Cron — Guia de referência

Converta expressões cron em agendamentos legíveis. Inspecione carimbos de data e hora entre fusos horários, valide a sintaxe do crontab e projete as próximas execuções.

Testador de Crontab & Expressão Cron — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados
Testador de Crontab & Expressão Cron — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados

Parâmetros-chave e controles

Campo de Minutos (Campo 1 no POSIX, Campo 2 no Quartz)Conjunto de Inteiros [0-59], Asterisco (*), Passo (/n), Intervalo (a-b), Lista (,)

Especifica o minuto exato da hora em que a tarefa é acionada (0-59). Avaliado por máscaras de bits (bitmasks) de 60 bits com verificação de pertinência O(1); a sintaxe de passo */15 dispara nos minutos 0, 15, 30 e 45 de cada hora.

Padrão: 0 (Início da Hora)
Campo de Horas (Campo 2 no POSIX, Campo 3 no Quartz)Conjunto de Inteiros [0-23] Formato 24 Horas

Especifica a hora do dia em notação militar de 24 horas (0-23), onde 0 representa meia-noite (00:00) e 23 representa 23:00. O intervalo 9-17 corresponde ao horário comercial padrão ISO 8601 nos fusos horários IANA.

Padrão: * (A Cada Hora)
Campo do Dia do Mês (Campo 3 no POSIX, Campo 4 no Quartz)Conjunto de Inteiros [1-31], Ponto de Interrogação (?), Último (L), Dia Útil Mais Próximo (W)

Especifica o dia calendário dentro do mês de 1 a 31. Dias inválidos que excedem a duração do mês (ex.: 31 em abril, 30 em fevereiro) são ignorados de forma segura durante a validação de virada de calendário.

Padrão: * (A Cada Dia)
Campo de Mês (Campo 4 no POSIX, Campo 5 no Quartz)Conjunto de Inteiros [1-12] ou Abreviações de 3 Letras [JAN-DEC]

Especifica o mês do calendário de 1 (janeiro) a 12 (dezembro). Sistemas POSIX suportam identificadores de 3 letras que não diferenciam maiúsculas de minúsculas (JAN-DEC), mapeados internamente para uma bitmask de 12 bits.

Padrão: * (A Cada Mês)
Campo do Dia da Semana (Campo 5 no POSIX, Campo 6 no Quartz)Conjunto de Inteiros [0-7] ou Abreviações de 3 Letras [SUN-SAT], N-ésimo Dia (#), Último (L)

Especifica o dia da semana. Sob o padrão POSIX IEEE 1003.1 e Vixie cron, tanto 0 quanto 7 designam domingo (1=segunda-feira, ..., 6=sábado). Abreviações case-insensitive (SUN-SAT) eliminam ambiguidades de dialetos e erros de off-by-one.

Padrão: * (A Cada Dia da Semana)
Campo de Segundos (Campo 1 no Quartz / Spring, Omitido no POSIX)Conjunto de Inteiros [0-59] Segundos de Alta Resolução

Primeiro campo estendido de alta resolução em agendadores de 6 campos (Quartz, Spring Framework). O crontab UNIX padrão de 5 campos não suporta segundos e trata o token inicial extra como erro de sintaxe.

Padrão: 0 (Zero Segundos)
Campo de Ano (Campo 7 Opcional no Quartz, Campo 6 no AWS EventBridge)Conjunto de Inteiros [1970-2099], Asterisco (*), Omitido no POSIX

Campo de ano final opcional ou obrigatório suportado por agendadores corporativos para limitar rotinas recorrentes a épocas históricas ou futuras específicas, evitando loops infinitos.

Padrão: * (Sem Limite / A Cada Ano)

Dicas profissionais e melhores práticas

Coocorrência de Dia do Mês e Dia da Semana no POSIX Opera como OR Lógico, Não AND

Nas especificações padrão do Vixie cron e POSIX IEEE 1003.1, quando tanto o dia do mês (campo 3) quanto o dia da semana (campo 5) contêm valores diferentes de curinga (*), o agendador os avalia com uma condição OR lógica. Por exemplo, 0 0 13 * 5 NÃO executa exclusivamente em sextas-feiras 13; em vez disso, executa no 13º dia de cada mês E em todas as sextas-feiras de cada mês. Para restringir a execução estritamente a uma sexta-feira 13, mantenha o dia da semana como * e valide o dia útil no comando bash: 0 0 13 * * [ $(date +\%u) -eq 5 ] && /opt/backup.sh.

Valores de Passo (*/N) Reiniciam nos Limites do Campo e Geram Intervalos de Módulo Irregulares

Um equívoco comum entre desenvolvedores é presumir que */25 * * * * executará continuamente a cada 25 minutos. Na realidade, expressões de passo no cron avaliam estritamente dentro do limite de 0 a 59 minutos: 59 / 25 gera execuções apenas nos minutos 0, 25 e 50. Quando o relógio avança para a hora seguinte (ex.: de 01:50 para 02:00), o campo reinicia em 0, gerando um intervalo de 10 minutos em vez de 25 minutos. Se você precisa de intervalos contínuos que cruzem os limites da hora, utilize timers monotônicos do Systemd (OnUnitActiveSec=25m) ou filas de tarefas com token-bucket.

Padronize Sempre os Crontabs dos Servidores em UTC para Evitar Falhas com Horário de Verão

Executar daemons do crontab em fusos horários locais sujeitos ao horário de verão (DST) gera anomalias críticas no agendamento. Na transição do adiantamento do relógio (+1 hora), agendamentos configurados entre 02:00 e 02:59 são simplesmente ignorados porque essa hora inexiste no relógio civil. Na transição de retorno (-1 hora), as tarefas nessa janela executam duas vezes. Configure sempre os relógios do sistema e o ambiente do crontab com TZ=UTC, calculando offsets comerciais de forma estática para eliminar duplicações e execuções perdidas.

Símbolos de Porcentagem (%) no Vixie Cron Devem Ser Escapados com Barra Invertida

Em arquivos crontab, o caractere de porcentagem % não escapado possui significado sintático especial: ele é convertido pelo daemon do cron em um caractere de quebra de linha (newline), e todos os dados subsequentes são enviados via pipe para o stdin do comando. Tentar executar comandos como date +%Y-%m-%d provocará truncamento silencioso ou erros enigmáticos de sintaxe. É obrigatório escapar cada porcentagem como date +\%Y-\%m-\%d ou encapsular a execução dentro de um script shell executável externo.

Armadilhas comuns e solução de problemas

⚠️Erro de Sintaxe no Crontab: Colagem de Expressão de 6 ou 7 Campos no /etc/crontab do Linux

O crontab padrão do UNIX/Linux requer exatamente 5 campos delimitados por espaço. Expressões copiadas do Java Quartz, Spring Framework ou AWS EventBridge incluem um campo inicial de segundos (ex.: 0 0 12 * * ?) ou um campo final de ano. Ao colar no crontab padrão, o 6º token é interpretado como nome de usuário ou comando, quebrando a sintaxe. Remova o token de segundos inicial e o ano final, e converta curingas ? em asteriscos * normais.

⚠️Tarefa Cron Executa no Horário Local Errado ou em Hora Inesperada

O daemon do crontab avalia os agendamentos com base no fuso horário local do hardware e do kernel (/etc/timezone ou /etc/localtime). Em ambientes de nuvem (AWS EC2, contêineres Docker, nós Kubernetes), o relógio padrão do sistema é UTC. Um agendamento configurado como 0 9 * * 1-5 pretendendo disparar às 09:00 no horário de Brasília (UTC-3) será disparado às 09:00 UTC (06:00 em Brasília). Declare explicitamente CRON_TZ=America/Sao_Paulo no topo do arquivo crontab (Vixie cron 4.1+) ou converta o agendamento para UTC.

⚠️A Tarefa Cron Não Executa ou Faltam Variáveis de Ambiente ($PATH)

O cron executa tarefas em uma shell não interativa, limpa e sem login, com um PATH padrão mínimo (normalmente /usr/bin:/bin). Binários e utilitários instalados em /usr/local/bin, ~/.nvm ou /opt/homebrew falharão com o erro 'command not found'. Defina explicitamente PATH=/usr/local/bin:/usr/bin:/bin no início do crontab ou invoque todos os executáveis utilizando caminhos absolutos (ex.: /usr/bin/python3 /opt/app/job.py).

⚠️Frequência de Execução Dupla Inesperada ao Combinar Dia do Mês e Dia da Semana

Conforme estipulado pelo padrão POSIX IEEE 1003.1, quando tanto o campo de dia do mês quanto o de dia da semana são preenchidos com valores diferentes de *, a avaliação se comporta como uma instrução OR em vez de AND. A tarefa roda sempre que a data coincidir OU sempre que o dia da semana coincidir. Para exigir a correspondência simultânea, defina o dia da semana como * e inclua um teste de data POSIX inline no comando: 0 3 1-7 * * [ $(date +\%u) -eq 1 ] && /opt/first-monday.sh.

Perguntas frequentes (FAQ)

Como calcular o próximo horário exato de execução de uma expressão cron?▼

O próximo horário de execução é calculado avançando um timestamp base ISO 8601 minuto a minuto (ou segundo a segundo em motores de 6 campos) e avaliando cada candidato contra bitmasks de 64 bits pré-compiladas via operações bitwise AND com complexidade de passo O(n). Quando todos os campos coincidem simultaneamente — respeitando a lógica de união disjuntiva (OR) entre DOM e DOW do POSIX —, o carimbo de data/hora é registrado como instante de execução válido. Em sandboxes no navegador, toda a análise de AST e projeção ocorrem em memória JavaScript isolada, sem comunicação com servidores.

Qual a diferença entre o cron padrão Linux de 5 campos e o cron Quartz de 6 campos?▼

O cron padrão POSIX/Linux adota 5 campos delimitados por espaço (Minuto, Hora, Dia do Mês, Mês, Dia da Semana) operando com granularidade de 1 minuto, enquanto agendadores Java Quartz e Spring Framework utilizam 6 ou 7 campos, prefixando um campo obrigatório de Segundos (0-59) e, opcionalmente, sufixando um campo de Ano (1970-2099). Além disso, o Quartz introduz caracteres especiais como ? (campo irrestrito) e L (último dia do mês ou da semana), que geram erros fatais de sintaxe em crontabs UNIX padrão.

Qual a diferença entre o asterisco (*) e a barra (/passo) na sintaxe do cron?▼

O asterisco (*) atua como um caractere curinga irrestrito que corresponde a qualquer número inteiro válido no domínio daquele campo (ex.: minutos de 0 a 59), enquanto a barra (/passo) estabelece um intervalo de módulo que avalia apenas saltos discretos a partir de um índice base dentro dos limites do campo. Por exemplo, */15 corresponde aos minutos 0, 15, 30 e 45, enquanto 10-30/5 restringe a sequência de saltos estritamente ao intervalo delimitado, avaliando 10, 15, 20, 25 e 30.

Por que 0 0 13 * 5 executa em todas as sextas-feiras e não apenas na sexta-feira 13?▼

Pelo padrão POSIX IEEE 1003.1, caso os campos de dia do mês (campo 3) e dia da semana (campo 5) contenham valores diferentes de curinga (*), o agendador os interpreta como disjunção lógica OR em vez de conjunção AND. Consequentemente, a rotina dispara tanto no 13º dia de qualquer mês quanto em qualquer sexta-feira, independentemente da data. Para forçar uma condição AND estrita, defina o dia da semana como * e avalie o dia da semana no script usando [ $(date +\%u) -eq 5 ].

O que significam os caracteres ponto de interrogação (?) e L em expressões cron?▼

Nos dialetos Quartz, Spring e AWS EventBridge, o ponto de interrogação (?) indica a ausência de restrição de valor para resolver a ambiguidade entre dia do mês e dia da semana, enquanto a letra L representa Last (como o último dia civil do mês ou a última sexta-feira com 5L). Os crontabs POSIX IEEE 1003.1 convencionais não reconhecem ? nem L e rejeitam expressões contendo esses símbolos como sintaxe inválida.

Como o horário de verão afeta as tarefas agendadas no cron?▼

Durante o início do horário de verão (+1 hora), rotinas programadas na janela horária suprimida (normalmente das 02:00:00 às 02:59:59) deixam de rodar porque essa hora nunca transcorre no relógio do sistema. Já no término do horário de verão (-1 hora), tarefas nessa janela repetida são disparadas duas vezes, a menos que o cron esteja fixado em UTC. Para prevenir execuções perdidas ou duplicadas em produção, mantenha sempre o relógio do hardware e os processos do daemon em UTC.

Ferramentas e utilitários relacionados

Todas as ferramentas →