Crontab Guru
Cole uma expressão cron e obtenha uma explicação campo por campo, em inglês simples, do que ela faz. Sem precisar lembrar a ordem dos campos ou consultar os intervalos: o guru percorre cada um dos cinco campos (minuto, hora, dia do mês, mês e dia da semana) e lê a expressão da esquerda para a direita. Útil para conferir uma linha de crontab antes de implantá-la ou para explicar uma linha herdada.
Como usar o guru
-
1
Cole a expressão
Copie qualquer expressão cron padrão de 5 campos (por exemplo `0 9 * * 1-5`) para o campo de entrada.
-
2
Peça a explicação
Clique em Explain Cron e a ferramenta retorna uma descrição linha por linha de cada campo: minuto, hora, dia do mês, mês e dia da semana.
-
3
Leia a descrição
A explicação é gerada em inglês, por exemplo "Minute: every 5 minutes" ou "Hour: from 9 through 17."
-
4
Confira antes de implantar
Use a explicação para confirmar que o cronograma faz o que você deseja antes de colocá-lo no seu crontab, na configuração de CI ou em um manifesto Kubernetes.
Folha de dicas dos campos
┌───────────── minuto (0-59)
│ ┌─────────── hora (0-23)
│ │ ┌───────── dia do mês (1-31)
│ │ │ ┌─────── mês (1-12 ou JAN-DEC)
│ │ │ │ ┌───── dia da semana (0-6 ou SUN-SAT; Dom = 0 ou 7)
│ │ │ │ │
* * * * *
Operadores em expressões cron
| Operador | Significado | Exemplo |
|---|---|---|
* |
Todo valor | * * * * * |
, |
Lista de valores | 0,15,30,45 |
- |
Intervalo | 9-17 |
/ |
Passo (início/passo) | */5, 0-30/5 |
L |
Último (dia do mês ou último dia da semana, Quartz) | L, 5L |
W |
Dia útil mais próximo | 15W (Quartz) |
# |
N-ésimo dia da semana do mês | 1#3 (Quartz) |
? |
Sem valor específico | Apenas Quartz |
A ordem de leitura importa
0 */2 * * 1-5 é lido da esquerda para a direita como: minuto 0, a cada 2 horas, qualquer dia do mês, qualquer mês, de segunda a sexta. Por hábito, às vezes se lê os campos da direita para a esquerda e isso confunde; comece sempre pelo minuto.
A armadilha “a cada X minutos”
*/10 * * * * dispara nos minutos 0, 10, 20, 30, 40, 50, não “a cada 10 minutos a partir de quando o trabalho foi criado.” Os passos do cron sempre medem a partir do início do intervalo do campo. Se você implantar um trabalho às 12:03, a primeira execução será às 12:10, não às 12:13.
Para trabalhos que realmente precisam de “N minutos após a última execução,” use um agendador com um temporizador persistente (temporizadores systemd com OnUnitActiveSec, ou agendamento em nível de aplicativo com um timestamp da última execução armazenado).
Armadilhas do cron que vale conhecer
- Dia do mês + dia da semana ambos definidos: a maioria das implementações de cron trata isso como comportamento OR, provavelmente não é o que você deseja.
- Passo de 0:
*/0é inválido. - Intervalo se enrola:
22-2para horas não funciona no cron clássico; use22-23,0-2. - Fevereiro 30: uma programação como
0 0 30 2 *nunca dispara. - Ambiguidade do DST: trabalhos agendados entre 2h e 3h da manhã podem disparar duas vezes ou zero vezes em dias de transição do horário de verão.
Cron vs. agendadores modernos
O cron Unix ainda está em toda parte, mas para qualquer coisa crítica você provavelmente quer:
- temporizadores systemd: capturam execuções perdidas, suportam deslocamentos aleatórios, leem de arquivos de unidade.
- Kubernetes CronJob: declarativo, tentativas, ciente de fuso horário na versão 1.25+.
- Airflow / Prefect / Dagster: para trabalhos com dependências, tentativas, backfills, observabilidade.
- GitHub Actions schedule: cron de 5 campos, apenas UTC, intervalo mínimo de 5 minutos, entrega de melhor esforço.
O cron em si é um ótimo formato, mas um agendador ruim para trabalhos que não podem falhar.
Perguntas frequentes
Porque o dia da semana 0 é domingo no cron padrão (e 7 também é domingo, suportando ambas as convenções). A segunda-feira é 1. O Quartz numera os dias da semana de 1 a 7 com domingo = 1, o que frequentemente confunde quem transita entre dialetos.
O cron Unix clássico roda no fuso horário local do servidor, o que quer que /etc/timezone diga. Kubernetes CronJob, GitHub Actions e a maioria dos agendadores em nuvem rodam em UTC por padrão. Sempre confirme e, quando possível, use UTC para evitar surpresas do horário de verão.
O cron clássico não pode expressar isso diretamente. Solução alternativa: execute toda segunda-feira e verifique a data dentro do script: [ $(date +%d) -le 7 ] && ./job.sh. O Quartz suporta isso nativamente com 1#1.
Não. Cada agendamento precisa de sua própria linha. Mas você pode combinar vários agendamentos em uma linha com listas: 0 9,17 * * * roda às 9h e às 17h. Para agendamentos que não podem ser expressos como uma única linha, adicione várias linhas apontando para o mesmo comando.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Conversor de Binário para ASCII
Cole binário (bytes separados por espaço ou um longo fluxo de bits) e obtenha o texto ASCII que ele representa, decodificado 8 bits por vez.
Gerador de Cores Análogas
Crie uma paleta análoga de cinco cores a partir de qualquer cor base, com o trio clássico, dois tons externos e valores hex, RGB e HSL.
Conversor de ASCII para Hex
Converta texto ASCII em valores de byte hexadecimal. A saída usa dois dígitos hexadecimais por caractere, prontos para dumps de memória, rastreamentos de pacotes ou tabelas de firmware.