Analisador de Expressões Cron
Cinco campos separados por espaços, ou um atalho como @daily.
Você herda um crontab cheio de linhas como 0 */2 * * 1-5 e 30 3 * JAN,JUL 1. Este analisador expande cada campo nos valores exatos que ele abrange, então, em vez de adivinhar o que */2 cobre, você vê as doze horas que ele seleciona e a contagem ao lado delas. Você também recebe a forma normalizada de 5 campos, um aviso quando a expressão cai em uma armadilha conhecida e os próximos 5 horários de execução calculados no seu próprio fuso horário.
Como analisar uma expressão cron
-
1
Cole a expressão
Uma linha de 5 campos (`* * * * *`): minuto, hora, dia do mês, mês e dia da semana. Atalhos como `@daily` também funcionam.
-
2
Leia os campos expandidos
Cada campo aparece com os valores que ele abrange e com quantos são, então `*/2` no campo da hora mostra 0, 2, 4 e as outras nove que ele cobre.
-
3
Confira a prévia das próximas execuções
Os 5 próximos horários de disparo, calculados no seu navegador a partir do seu próprio fuso horário. Se não corresponderem à sua intenção, ajuste a expressão.
-
4
Leia os avisos
O analisador sinaliza as armadilhas: os dois campos de dia definidos ao mesmo tempo, uma data que nunca pode acontecer ou um operador que o cron padrão não entende.
No que cada campo se expande
Um campo não é um valor, é um conjunto. Saber o tamanho desse conjunto costuma responder à pergunta que trouxe você até aqui.
| Campo | Intervalo | * abrange |
Observações |
|---|---|---|---|
| Minuto | 0-59 | 60 valores | A origem mais comum de tarefas descontroladas |
| Hora | 0-23 | 24 valores | Relógio de 24 horas, nunca de 1 a 12 |
| Dia do mês | 1-31 | 31 valores | Meses curtos simplesmente pulam os dias que não existem |
| Mês | 1-12 | 12 valores | JAN a DEC também são aceitos |
| Dia da semana | 0-7 | 7 valores | 0 e 7 são ambos domingo |
Operadores dentro de um campo: * todos os valores, 1,5,10 uma lista, 1-5 um intervalo, */15 um passo contado a partir do início do intervalo e 0-45/15 um passo dentro de um intervalo.
Nomes e atalhos são aceitos
Nomes de mês e de dia da semana são interpretados e expandidos para os números que representam, então 30 3 * JAN,JUL 1 informa mês 1, 7 e dia da semana 1. Os atalhos nomeados são expandidos para a forma de 5 campos antes de qualquer outra coisa:
| Atalho | Expande para | Significado |
|---|---|---|
@yearly, @annually |
0 0 1 1 * |
Meia-noite de 1º de janeiro |
@monthly |
0 0 1 * * |
Meia-noite do dia 1º |
@weekly |
0 0 * * 0 |
Meia-noite de domingo |
@daily, @midnight |
0 0 * * * |
Meia-noite de todos os dias |
@hourly |
0 * * * * |
No minuto 0 de cada hora |
@reboot também é reconhecido, mas não tem agendamento para expandir: ele é executado uma vez quando a máquina inicia, então não há horários de execução para prever.
Avisos que vale a pena ler
- Os dois campos de dia restritos.
0 0 1 * MONnão significa “no dia 1º, mas só se for uma segunda-feira”. O cron padrão trata os dois campos de dia como um OU lógico quando ambos estão restritos, então essa linha dispara no dia 1º de todo mês e em toda segunda-feira. O analisador levanta esse aviso, e a prévia das execuções segue a regra do OU. - Uma data que nunca acontece.
0 0 30 2 *pede 30 de fevereiro. A expressão é sintaticamente válida e o cron a aceita, mas ela nunca vai disparar. O analisador avisa isso em vez de mostrar uma lista vazia sem explicação. - Operadores do Quartz.
L(último),W(dia útil mais próximo),#(enésimo dia da semana) e?são extensões do Quartz, não do crontab padrão. Dentro de uma linha de 5 campos eles são reconhecidos e sinalizados, e o campo mostra que se trata de um operador do Quartz em vez de uma lista de valores. Nenhum horário de execução é calculado, porque o cron padrão simplesmente não executaria essa linha.
O que é rejeitado de imediato
- O número errado de campos. Uma linha Quartz de 6 campos com segundos, ou de 7 campos com ano, é rejeitada pela contagem de campos.
- Valores fora do intervalo, por exemplo minuto 75 ou mês 13.
- Um intervalo decrescente como
5-1. - Um passo igual a zero, como
*/0.
Toda rejeição nomeia o campo e o valor que a causou, então você corrige uma coisa só em vez de reescrever a linha inteira.
Fuso horário
A prévia das próximas execuções é calculada no seu navegador, no fuso horário configurado no seu dispositivo. Um crontab roda no fuso horário da máquina que o hospeda, então, se esse servidor estiver em UTC e você não estiver (o horário de Brasília é UTC-3), ajuste os horários antes de comparar.
Perguntas frequentes
Como agendamento, não. Uma linha Quartz de 6 campos com segundos, ou de 7 campos com ano, é rejeitada pela contagem de campos. Os operadores do Quartz dentro de uma linha normal de 5 campos (L, W, #, ?) são um caso diferente: eles são reconhecidos e sinalizados, mas nenhum horário de execução é calculado, porque o cron padrão também não executaria essa linha.
As causas mais comuns são a diferença de fuso horário entre o seu dispositivo e o servidor que roda o crontab, ou os dois campos de dia definidos ao mesmo tempo. Quando o dia do mês e o dia da semana estão os dois restritos, o cron dispara quando qualquer um dos dois corresponder, e não os dois juntos, então 0 0 1 * MON roda muito mais vezes do que a maioria das pessoas espera. A contagem de valores ao lado de cada campo é a forma mais rápida de perceber um campo mais amplo do que você imaginava.
Pode. O Kubernetes usa a sintaxe padrão de 5 campos. O único ponto de atenção é o relógio: um CronJob roda no fuso horário do cluster (UTC, a menos que spec.timeZone indique outro), enquanto a prévia daqui usa o fuso horário do seu próprio dispositivo.
São atalhos nomeados que o cron do Linux aceita no lugar dos cinco campos. @daily (e também @midnight) é 0 0 * * *, @weekly é 0 0 * * 0, @monthly é 0 0 1 * *, @yearly (e também @annually) é 0 0 1 1 * e @hourly é 0 * * * *. Cole qualquer um deles e o analisador mostra a forma de 5 campos para a qual ele se expande. @reboot é a exceção: ele roda na inicialização, então não tem agendamento nem horários de execução.
Ferramentas relacionadas
Gerador de Cartão CSS
Crie o CSS de um contêiner de cartão: fundo, borda, raio dos cantos, espaçamento interno e sombra suave, com pré-visualização imediata e código para copiar e colar.
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.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Visualizador de Markdown
Escreva Markdown e veja a renderização HTML atualizar ao vivo. Sintaxe com estilo GitHub, incluindo tabelas, listas de tarefas, blocos de código cercados e autolinks.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Conversor de base numérica
Converta números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36, com o detalhamento posicional.
Ferramenta disponível em outros idiomas
- Parser wyrażeń cron [PL]
- Analyseur d'expressions cron [FR]
- Cron 式パーサー [JA]
- Parser för cron-uttryck [SV]
- Cron-Ausdruck-Parser [DE]
- Pengurai Ekspresi Cron [ID]
- Bộ phân tích biểu thức Cron [VI]
- محلل تعبيرات cron [AR]
- Analizador de expresiones cron [ES]
- Cron 표현식 파서 [KO]
- เครื่องมือแยกวิเคราะห์นิพจน์ Cron [TH]
- Cron-expressieparser [NL]
- Cron Expression Parser [EN]
- Parser di espressioni cron [IT]
- Парсер cron-выражений [RU]
- Cron İfadesi Ayrıştırıcı [TR]
- Cron 表达式解析器 [ZH]