trabalho cron que é executado na última segunda-feira do mês

4

Eu preciso lançar alguns scripts cron na última segunda-feira de cada mês.

Eu queria saber se a combinação de intervalos fará o trabalho, por exemplo:

8 04 19-26  *  2     $HOME/bin/mailstub

Espero ter acertado e que meu cron job só funcione uma vez na semana entre 19 e 26 de cada mês.

Ficaria feliz em ouvir os comentários das pessoas,

Estou usando o CentOS 5.6 - então a construção L mencionada em alguns lugares (por exemplo, a Wikipédia) não funciona no meu sistema.

Agradecemos antecipadamente

Oz

    
por Oz123 03.05.2011 / 17:12

2 respostas

3

Isso é configurado para ir várias vezes por dia. Você quer:

0 8 04 19-26 * * MON $HOME/bin/mailstub

Isso ocorrerá às 8:04:00 de qualquer dia entre os 19 e os 26 anos, que acontecerá na segunda-feira de qualquer mês de qualquer ano.

No entanto, se é segunda-feira no dia 19, é segunda-feira dia 26. Portanto, você gostaria de tê-lo do 19-25

0 8 04 19-25 * * MON $HOME/bin/mailstub

Então, isso deve ocorrer uma vez por mês na segunda-feira. No entanto, não é garantido (ou provável) ser a última segunda-feira. Se você precisar que seja a última e a sintaxe L não funcione, você precisa programar a lógica no script que está sendo chamado. Isso é feito facilmente com python, mas está além do escopo desta questão.

    
por 03.05.2011 / 17:33
7

Seu cron job será executado em uma terça-feira (5º campo, dia da semana, 0 ou 7 é domingo) e nem sempre na última terça-feira do mês. Seria melhor usar:

8 04 * * 1 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && $HOME/bin/mailstub

Isso verifica se o mês de hoje não é igual ao mês de 7 dias a partir de agora. Se não for igual, é a última segunda-feira do mês.

    
por 03.05.2011 / 17:32

Tags