Português (Brasil)

Ferramentas de desenvolvedor · Gerador Crontab

Sintaxe de etapa e intervalo do cron: */15, 1-5, listas e como elas se combinam

· Como funciona

cron agendamento fluxo de trabalho do desenvolvedor

Marcas de minutos agrupadas em um intervalo, uma lista e uma sequência escalonada
Ilustração vetorial original ToolAcre

Etapas, intervalos e listas fazem parte da sintaxe do cron que as pessoas copiam sem entender. Esta postagem explica cada um, como eles se aninham e surpresas como */7 que não significa 'a cada sete dias'.

A cada 15 minutos, mas apenas de 9 a 5 — a expressão ingênua também dispara à noite

“A cada quinze minutos durante o horário comercial” contém duas restrições independentes. O campo dos minutos precisa de marcas de um quarto de hora, enquanto o campo das horas precisa de um intervalo limitado. Escrever apenas `*/15 * * * *` resolve a primeira metade e ainda produz execuções durante a noite. A expressão deve codificar ambas as restrições antes de dizer qualquer coisa sobre os dias da semana.

ToolAcre analisa os cinco campos de agendamento, não um comando. Comece com `*/15 9-17 * * 1-5`, depois inspecione a frase e a visualização da próxima execução. Essa verificação detecta o erro comum de colocar `9-17` na posição dos minutos ou deixar o campo do dia da semana irrestrito. O gerador cria e explica uma expressão; ele não instala nem executa um trabalho.

Intervalos — 1-5 e 9-17 como intervalos inclusivos em um único campo

Um hífen cria um intervalo inclusivo dentro de um campo. `9-17` na posição hora se expande para nove valores: 9 até 17. Da mesma forma, `1-5` na posição de dia da semana se expande para segunda a sexta porque este analisador mapeia domingo para 0, segunda-feira para 1 e assim por diante. Ambos os endpoints participam, então 17:00 está dentro do intervalo de horas selecionado.

Os intervalos não podem ultrapassar os limites de um campo. O analisador rejeita uma forma invertida como `17-9` e sugere dividir os valores desejados em dois itens da lista. Essa recusa é útil porque as regras de empacotamento diferem entre os produtos programados. Aqui, um intervalo sempre se move para cima entre valores que já satisfazem os limites numéricos ou de nomes aceitos do campo.

Etapas — */15 e 9-17/2, e por que a etapa reinicia no limite inferior do campo em vez de contar continuamente

Uma barra escolhe cada enésimo valor a partir de um ponto inicial. `*/15` no campo de minuto começa no mínimo, zero, e se expande para 0, 15, 30 e 45. `9-17/2` começa em 9 e produz 9, 11, 13, 15 e 17. A etapa pertence a um campo; ele não conta os minutos decorridos além dos limites das horas.

O analisador também aceita um início simples com uma etapa. `5/15` no campo de minutos significa 5, 20, 35 e 50 porque o ponto final superior implícito é 59. As etapas devem ser números inteiros positivos e não podem exceder o tamanho do intervalo completo do campo. Uma etapa zero, não numérica ou superdimensionada recebe um erro de validação específico do campo em vez de uma interpretação adivinhada.

As listas podem combinar valores, intervalos e intervalos escalonados em um campo

As vírgulas unem várias peças dentro do mesmo campo. Um simples `1,15,30` nomeia valores de três minutos. Entradas mais elaboradas podem combinar um valor único, um intervalo inclusivo e um intervalo escalonado: o `0,10-20/5,59` testado se expande para 0, 10, 15, 20 e 59. Os resultados duplicados são removidos e os valores expandidos são classificados antes que cálculos posteriores os utilizem.

Esta gramática é composicional, mas ainda estreita. Cada item de vírgula pode conter uma barra e um intervalo deve ter exatamente dois pontos finais não vazios. Uma vírgula perdida, várias barras ou um intervalo inacabado são rejeitados com um motivo para nomear o campo. Isso torna uma expressão mista passível de revisão sem fingir que a pontuação malformada tem um significado convencional.

Exemplo resolvido: */15 9-17 * * 1-5 - enumerando os minutos que produz e o caso extremo 17:45

Para `*/15 9-17 * * 1-5`, os valores de minutos são 00, 15, 30 e 45; os horários são de 09 a 17; e os valores dos dias da semana são de segunda a sexta. Em cada dia da semana incluído o primeiro candidato é 09:00 e o último é 17:45. Não há 18:00 porque 18 está fora do intervalo de horas.

A vantagem da última execução ilustra por que a expansão do campo supera a taquigrafia conversacional. “Nove às cinco” pode significar parar em 17:00 para um leitor e incluir o horário completo das cinco horas para outro. O campo de hora do Cron seleciona um intervalo de horas e o campo de minutos seleciona posições dentro dele. Se 17:45 for indesejado, o limite desejado precisará de uma expressão diferente ou lógica do lado do comando.

Uma etapa do dia do mês se expande a partir do dia 1 a cada mês; não é um intervalo de uma semana decorrida

`*/7` no dia do mês se expande a partir do mínimo desse campo de 1, produzindo 1, 8, 15, 22 e 29 onde essas datas existem. Quando o próximo mês começar, o campo começará novamente em 1. Portanto, descreve datas selecionadas do calendário, e não um intervalo de sete dias que avança continuamente. Fevereiro e meses mais curtos simplesmente carecem de algumas datas importantes.

A mesma sintaxe possui um valor inicial diferente em outro campo. `*/7` minutos começam em 0, enquanto `*/7` dias do mês começam em 1. O analisador de ToolAcre deriva a sequência de cada especificação de campo e sua visualização pesquisa datas do calendário. Para uma cadência semanal real, restrinja o dia da semana em vez de tratar as etapas do dia do mês como a duração decorrida.

Operadores não suportados são recusados ​​em vez de interpretados como outro dialeto cron

Este analisador de cinco campos não implementa `L`, `W`, `#` ou `?`. Esses caracteres não são descartados silenciosamente e não são apresentados como sintaxe crontab portátil. Seis campos também são recusados, com a explicação de que a posição inicial extra pertence a um estilo de escalonador orientado a segundos, e não ao formato que esta rota lê.

O limite é deliberado: minuto, hora, dia do mês, mês e dia da semana são a gramática posicional completa aqui. Antes de mover uma expressão de outro escalonador, conte seus campos e identifique seus operadores. O gerador pode validar seu próprio dialeto; ele não pode certificar o Quartz, a sintaxe do calendário do systemd ou uma variação de serviço em nuvem.

Conclusão: etapas significam 'começar do final do intervalo' - e o gerador explica uma expressão de etapa em palavras que você pode verificar

Os intervalos definem um intervalo inclusivo, vírgulas mesclam partes e cortam valores de amostra a partir de um início específico do campo. Ler essas operações nessa ordem transforma um token denso em um conjunto finito que pode ser inspecionado. Também explica arestas como 17:45 sem depender de uma frase copiada cujo autor possa ter significado outra coisa.

Use o gerador como uma superfície de revisão: insira a expressão, leia a descrição, inspecione os avisos e compare as próximas cinco execuções do relógio na zona pretendida. Em seguida, coloque os cinco campos verificados ao lado do comando real em seu próprio ambiente. A construção do cronograma e a execução do trabalho permanecem responsabilidades separadas.