Executer cron un jour spécifique dans le mois (e.g. deuxième lundi)
Executer cron un jour spécifique dans le mois (e.g. deuxième lundi)
Executer cron un jour spécifique dans le mois (e.g. deuxième lundi)
Comment exécuter un cron sur un jour spécifique de la semaine une fois par mois ?
Ceci pourrait sembler simple au premier abord, puisque cette ligne pourrait semblait faire l’affaire :
1
2
# Run on every second Tuesday of the month
15 3 8-14 * 2 /usr/bin/bash /opt/myscriptfortuesday.sh
Mais ceci ne marcherait pas car le ‘2’ pour vérifier que nous sommes bien un mardi vient comme une condition OR, et donc la commande pourrait s’exécuter du jour 8 au jour 14 et tous les mardis du mois.
Pour contourner cela, vous pouvez utiliser cette commande :
1
2
# Run on every second Tuesday of the month
15 3 8-14 * * test $(date +\%u) -eq 2 && /usr/bin/bash /opt/myscriptfortuesday.sh
Voici l’explication de cette ligne de cron :
1
2
3
4
5
6
15 = 15th minute
3 = 3am
8-14 = between day 8 and day 14 (second week)
* = every month
* = every day of the week
test $(date +\%u) -eq 2 && /usr/bin/bash /opt/myscriptfortuesday.sh = the command to execute with a check on the date
En effectuant cette vérification, nous vérifions alors d’abord que nous sommes bien un mardi avant d’exécuter la commande. N’oubliez pas d’ajouter un antislash avant le caractère ‘%’ pour l’échapper.