condições OR crontáveis

3

Parâmetros crontáveis parecem funcionar como condições 'ands'. Então o exemplo

0 9-5 * * 1-5

É executado quando as condições são atendidas "o minuto é zero E a hora é entre 9 e 5 E o dia é entre segunda e sexta-feira".

O que eu gostaria é de uma função 'ou', então eu posso dizer "execute de segunda a sexta-feira OU o dia 8 do mês". Existe tal coisa?

Eu percebi que você poderia adicionar duas entradas, mas com muitas entradas adiciona algo para esquecer.

    
por matt 06.09.2012 / 17:34

1 resposta

3

Eu ia dizer: use , (vírgula). De man 5 crontab :

Lists are allowed.
A list is a set of numbers  (or  ranges)  separated  by  commas.
Examples:  "1,2,5,9","0-4,8-12".

Mas seu caso é um pouco mais complicado e você pode aproveitar esse recurso:

Note: The day of  a command's execution can be specified by two fields day
of month, and day of week. If both fields are restricted (i.e., aren't *),
the command will be run when either  field matches the current time.
For example, "30  4  1,15  *  5" would cause a command to be run at 4:30 am
on the 1st and 15th of each month, plus every Friday.

Então, no seu caso, você pode escrever 0 9-5 8 * 1-5 . Isso executaria seu comando a cada oito dias do mês e todos os dias de segunda a sexta-feira.

Outra solução é usar test ( man bash , seção EXPRESSÕES CONDICIONAIS e man date ):

# Run on every second Saturday of the month:
   0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"
    
por 06.09.2012 / 17:53

Tags