J'ai besoin de trouver un moyen de créer un travail afin qu'il s'exécute tous les deux mercredis du mois. Est-ce possible?
J'ai besoin de trouver un moyen de créer un travail afin qu'il s'exécute tous les deux mercredis du mois. Est-ce possible?
Réponses:
Ma page de manuel pour crontab (que je n'arrive malheureusement pas à trouver en ligne) donne l'exemple suivant:
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
L'adaptation à vos besoins ...
0 4 8-14 * * test $(date +\%u) -eq 3 && job.sh
*
), la commande s'exécutera lorsque l'un ou l'autre correspond .
date +\%u
Vous pouvez éviter d'exécuter un script externe en utilisant une combinaison de l'astuce du jour de la semaine et du jour de la semaine:
# Run on every second Wednesday of the month
0 4 8-14 * Wed job.sh
Cela évite également d'exécuter un autre programme externe. Le 8-14 sélectionne tous les jours qui correspondent à la deuxième semaine du mois. Ensuite, il filtre juste ce mercredi.
Il n'est pas possible d'utiliser cron seul, mais vous pouvez appeler un script une fois par semaine pour effectuer le test:
Dans crontab, exécutez second_wed.sh à 12h00 tous les mercredis:
0 12 * * 3 /home/you/bin/second_wed.sh
Dans second_wed.sh:
#!/usr/bin/env bash
day_of_month=`date +"%
if [ $day_of_month -gt 7 -a $day_of_month -lt 15 ]; then
# Call your program here instead of 'ls'…
ls
fi
Sur la base de cette réponse, vous pourriez faire:
00 12 * * Wed expr `date +\%d` \> 7 \& `date +\%d` \< 15 >/dev/null && runJob.sh
Pour les serveurs CentOS 7, cela semble être la syntaxe qui fonctionne pour moi. Veuillez noter les espaces autour du [
et ]
. Cela m'a pris du temps à comprendre.
Cela exécute le test.sh
fichier à 13h07 / 13h07 le deuxième mercredi du mois. (0 = dimanche, 1 = lundi, 2 = mardi, 3 = mercredi, etc.)
07 13 8-14 * * [ `date +\%u` = 3 ] && /root/scripts/test.sh
Feu à 10h15 le troisième vendredi de chaque mois: 0 15 10 ? * 6#3
Source: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm