Execute um trabalho cron a cada 5 minutos entre duas vezes


18

Existe uma maneira de especificar um trabalho que é executado a cada 5 minutos entre a hora de início e a hora de término nos dias úteis em um crontab?

Atualização Acho importante que meus horários de início e término não sejam no horário de expediente. Portanto, especificar 9-5 na coluna da hora não é suficiente. Eu quero 9: 30-17: 30.

Respostas:


24

Você terá que fazer isso por partes:

30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh

1

Se a resposta de Ignacio Vazquez-Abrams não funcionar realmente para você, por exemplo, porque o script precisa de um grande número de parâmetros ou os critérios de chamada não são triviais (ou não têm limite de tempo), uma abordagem alternativa é simplificar script do wrapper, chame o script do wrapper em intervalos regulares e faça com que o script do wrapper verifique a hora atual e invoque o script principal.

Por exemplo:

#/bin/bash

# Check to see if we should run the script now.
HOUR=$(date +%H)
MINUTE=$(date +%M)
if test $HOUR -lt 9; then exit 0; fi
if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi
if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi
if test $HOUR -gt 17; then exit 0; fi

# All checks passed; we should run the script now.
exec script.sh ... long list of parameters ...

Isso permite codificar critérios de execução mais complexos do que a sintaxe do cron permite facilmente, com uma despesa relativamente pequena de chamar um shell e um script separado regularmente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.