Expressão cron

Explique um cron Linux, Spring ou Quartz, ou monte-o pelos campos, e liste as próximas 10 execuções na hora local deste computador. Montar um crontab

Montar um crontab

Campos

Quando este plano dispara

Escolha Linux Crontab (5 campos), Spring @Scheduled (6 campos, segundos à frente) ou Quartz (6 campos, ou 7 com o ano). A página explica cada campo e lista as próximas 10 execuções no relógio deste computador. Não instala a tarefa. Para a montar a partir de uma hora ou de @daily, use o gerador de crontab. As marcas de tempo são marca de tempo Unix.

Como usar

  1. Formato é Linux Crontab (5), Spring @Scheduled (6) ou Quartz (6–7). A linha por baixo do menu diz a ordem dos campos e qual número é o domingo.
  2. Escreva a expressão, abra Modelo ou mude cada linha em Campos. Modelo tem A cada minuto, A cada hora, Todos os dias à meia-noite, Todos os domingos à meia-noite, Dias úteis, 9–17, de 15 em 15 minutos e Dia 1 do mês à meia-noite. Os botões por baixo do campo carregam essa lista para o formato atual, e também Todos os dias às 02:00, Fim de semana às 09:00, Minutos 5/15, A cada 2 horas no minuto 30 e 1 de janeiro. Spring e Quartz também têm Último dia do mês às 23:00, o dia útil mais próximo do dia 15, a primeira segunda às 10:15 e a última sexta às 10:15. O Quartz também tem 1 de janeiro de 2030. A ligação ao lado dos botões abre o gerador de crontab. Cada linha tem Cada, Intervalo, Passo e Valores. Valores mostra os números: segundos e minutos 0–59, horas 0–23, dias 1–31, meses 1–12, dias SUN–SAT. Spring e Quartz também têm Não fixar (?), Último dia (L), Último dia útil (LW), Dia útil mais próximo (W), Enésimo dia (#) e Último dia da semana (nL). Uma mudança em Campos reescreve a expressão. Um campo que as linhas não conseguem mostrar fica em Personalizado e mantém o texto.
  3. Atualizar ao digitar está ligado. Explicar corre uma vez. Mostrar exemplo carrega o exemplo de dias úteis do formato atual: Linux */15 9-17 * * 1-5, Spring 0 */15 9-17 * * MON-FRI, Quartz 0 */15 9-17 ? * MON-FRI.
  4. O resultado nomeia cada campo e depois Próximas 10 execuções. Limpar tudo esvazia a expressão e o resultado e repõe cada campo em Cada. Copiar resultado copia esse texto. Mudar o formato acrescenta ou tira os segundos, transforma ? em * no Linux e reescreve os números da semana como SUN–SAT para manter os mesmos dias.

Que datas coincidem

Linux é minuto, hora, dia do mês, mês, dia da semana. Domingo é 0, 7 ou SUN. Segunda é 1. Não há ?, L, W nem #. Se o dia do mês e o dia da semana estão ambos limitados, basta um deles, e o resultado diz isso.

Spring acrescenta os segundos à frente. O domingo usa os mesmos números do Linux. ? ignora esse campo. L é o último dia do mês. 15W é o dia útil mais próximo do dia 15 e fica dentro do mês. LW é o último dia útil. MON#1 é a primeira segunda. 6L é o último sábado, porque aqui 6 é sábado.

Quartz usa os mesmos seis campos e um ano opcional como 2024-2030. Domingo é 1 ou SUN. Segunda é 2. Sábado é 7. 6L é a última sexta. O dia ou o dia da semana deve ser ?, como em 0 0 2 * * ? para as 02:00 todos os dias. Se ambos forem concretos, o resultado ainda lista uma execução quando qualquer um coincide e avisa. SUN–SAT e JAN–DEC valem em qualquer capitalização e significam o mesmo dia ou mês nos três formatos.

Um hífen é um intervalo, uma vírgula uma lista e uma barra um passo. */15 avança desde o início do campo de 15 em 15. 5/15 começa em 5 até ao fim, por isso os minutos são 5, 20, 35 e 50. As horas são locais, não UTC. Com campo de segundos a lista avança por segundos; sem ele, por minutos.

Onde se usa

  • Conferir uma linha de crontab como 0 2 * * * antes de a instalar.
  • Escrever o Spring 0 0 2 * * * para as 02:00 todos os dias.
  • Conferir o Quartz 0 15 10 ? * 6L (última sexta às 10:15) ou 0 0 23 L * ? (23:00 no último dia do mês).

Perguntas

Porque é que as 02:00 têm cinco campos no Linux e seis no Spring?

O Linux não tem segundos, por isso as 02:00 são 0 2 * * *. Spring e Quartz põem os segundos à frente: a mesma hora é 0 0 2 * * * ou, no Quartz, 0 0 2 * * ?.

O que significa o ponto de interrogação?

Esse campo não está fixado. O Quartz quer isso no dia do mês ou no dia da semana. 0 0 2 * * ? são as 02:00 todos os dias.

O 1 é domingo?

No Linux e no Spring, 1 é segunda e o domingo é 0 ou 7. No Quartz, 1 é domingo e 2 é segunda. SUN é domingo nos três.

O relógio não bate com UTC.

Próximas 10 execuções usa o fuso local deste computador.