Cronograma alternado semanalmente (com valores de passo)

5

Eu quero um cronjob para ser executado em todo primeiro e terceiro sábado em um mês e outro para ser executado a cada segundo e quarto sábado. Agora o crond oferece "valores de passo":

Step values can be used in conjunction with ranges. Following a range with "" specifies skips of the number's value through the range. For example, "0-23/2" can be used in the hours field to specify command execution every other hour (the alternative in the V7 standard is "0,2,4,6,8,10,12,14,16,18,20,22"). Steps are also permitted after an asterisk, so if you want to say "every two hours", just use "*/2".

Mas se eu usar

30 3 * * 6/2 command

ambos os scripts são executados (indeterministicamente) a cada segundo sábado. Qual é o caminho certo para fazê-los funcionar alternadamente?

Eu conheço a possibilidade de um script wrapper, mas eu quero evitá-lo se houver uma solução mais elegante.

    
por d135-1r43 04.06.2012 / 09:20

2 respostas

6

Como você sabe que um e apenas um sábado ocorrerá nos primeiros sete dias de qualquer mês, você pode seguir esse padrão e usar o campo day-of-month para manter cada trabalho separado:

30 3 1-7,15-21 * 6 script1
30 3 8-14,22-28 * 6 script2

Assim, script1 sempre pegará o primeiro e terceiro sábados e script2 sempre obterá o segundo e o quarto.

    
por 04.06.2012 / 09:35
0

Por que não usar o cron #?

30 3 * * 6 # 1 Firstandthirdcommand
30 3 * * 6 # 3 Firstandthirdcommand
30 3 * * 6 # 2 SecondAndfourthCommand
30 3 * * 6 # 4 SecondAndfourthCommand Review

Hash (#)     '#' é permitido para o campo do dia da semana e deve ser seguido por um número entre um e cinco. Ele permite que você especifique construções como "a segunda sexta-feira" de um determinado mês

link

    
por 20.08.2012 / 22:52

Tags