Inicie o cron job das 06h05 às 22h05 a cada 15 minutos

Inicie o cron job das 06h05 às 22h05 a cada 15 minutos

Preciso executar um cron job a cada 15 minutos, começando às 06h05 e terminando às 22h05.

0 5/15 6-22 * * *

A sintaxe a seguir inclui 22:35 e 22:50.

Alguma ideia de como conseguir isso? Isso é possível com uma linha ou preciso configurar várias?

Responder1

É possível com um croline mas apenas com truques

SHELL=/bin/bash
5-50/15 6-22 * * * [[ '2220 2235 2250' =~ "$(date +\%H\%M)" ]] || /path/to/script

Ou com sh(e bash)

SHELL=/bin/sh
5-50/15 6-22 * * * case "$(date +\%H\%M)" in 2220|2235|2250) ;; *) /path/to/script;;esac

Observe os escapes de barra invertida para caracteres de porcentagem (%), necessários para crontabs.

Responder2

“Cron Job" do xmodulo está licenciado sob CC BY 2.0

*/15 6-22 * * * /path/to/script

OU

5,20,35,50 6-22 * * *  /path/to/script

Um campo pode ser um asterisco (*), que sempre significa "primeiro-último". Intervalos de números são permitidos. Os intervalos são dois números separados por um hífen. O intervalo especificado é inclusivo. Por exemplo, 8-11 para uma entrada de “horas” especifica a execução nas horas 8, 9, 10 e 11.

Listas são permitidas. Uma lista é um conjunto de números (ou intervalos) separados por vírgulas. Exemplos: "1,2,5,9", "0-4,8-12".

Os valores de etapa podem ser usados ​​em conjunto com intervalos. Seguir um intervalo com "" especifica saltos do valor do número no intervalo. Por exemplo, "0-23/2" pode ser usado no campo horas para especificar a execução do comando a cada duas horas (a alternativa no padrão V7 é "0,2,4,6,8,10,12,14,16 ,18,20,22"). As etapas também são permitidas após um asterisco, então se você quiser dizer "a cada duas horas", basta usar "*/2".

Os nomes também podem ser usados ​​para os campos “mês” e “dia da semana”. Use as três primeiras letras do dia ou mês específico (maiúsculas e minúsculas não importa). Intervalos ou listas de nomes não são permitidos.

O campo "sexto" (o resto da linha) especifica o comando a ser executado. Toda a parte do comando da linha, até um caractere de nova linha ou %, será executada por /bin/sh ou pelo shell especificado na variável SHELL do arquivo cron. Os sinais de porcentagem (%) no comando, a menos que sejam escapados com barra invertida (), serão alterados para caracteres de nova linha e todos os dados após o primeiro% serão enviados ao comando como entrada padrão.

Nota: O dia da execução de um comando pode ser especificado por dois campos – dia do mês e dia da semana. Se ambos os campos forem restritos (ou seja, não forem *), o comando será executado quando um dos campos corresponder à hora atual. Por exemplo, "30 4 1,15 * 5" faria com que um comando fosse executado às 4h30 nos dias 1 e 15 de cada mês, além de todas as sextas-feiras.

Responder3

Eu pessoalmente dividiria em duas linhas:

5-50/15 6-21 * * * /path/to/script
5       22   * * * /path/to/script

A primeira linha cobre 0605-2150, a segunda - para execução adicional em 2205.

Se você realmente deseja um liner, eu usaria uma verificação inexata para acomodar um possível horário de início do trabalho inexato:

5-50/15 6-22 * * * [[ $(date +"\%-H\%M") -le 2210 ]] && /path/to/script

Responder4

Um pouco atrasado, mas para fins de integridade, você pode obter uma lista de tempos de execução futuros para qualquer expressão cron em CronBuddy.com - uma maneira fácil de verificar o que vai acontecer.

informação relacionada