J'ai besoin de votre aide pour construire une tâche cron qui s'exécutera le deuxième dernier jour ouvrable de chaque mois. Je peux utiliser LW comme indiqué ci-dessous mais je ne suis pas sûr de comment faire pour obtenir l'avant-dernier. J'ai besoin de votre aide et de vos conseils s'il vous plaît.
@MWE m'a gentiment fourni une solution possible mais elle ne semble pas fonctionner dans tous les scénarios de test.
code:
#!/bin/bash
date
WEEKDAY=$(date +%u)
# Si le lundi est détecté dans 2 jours.
if [ $(date +%d -d "2 day") -eq 1 ] && [ ${WEEKDAY} -lt 5 ] ; then
echo "C'est le 2ème dernier jour ouvrable du mois"
# Si le lundi est détecté dans 5 jours.
elif [ $(date +%d -d "5 day") -eq 1 ] && [ ${WEEKDAY} -eq 5 ] ; then
echo "C'est le 2ème dernier jour ouvrable du mois"
else
exit
fi
Scénario de test: J'ai modifié la date système sur le serveur pour être le 29 août 2019 (**c'est le deuxième dernier jour ouvrable sur le système)
le script en mode de débogage se termine :
[oracle@rdbauroral01v ~]$ bash -x ./crontest.sh
+ date
Thu Aug 29 13:28:20 UTC 2019
++ date +%u
+ WEEKDAY=4
++ date +%d -d '2 day'
+ '[' 31 -eq 1 ']'
++ date +%d -d '5 day'
+ '[' 03 -eq 1 ']'
+ exit
Je vous remercie pour votre aide ici.
1 votes
Votre meilleure option avec ce genre d'expression cron inhabituelle est de laisser la tâche s'exécuter quotidiennement et de laisser le script lui-même gérer la logique plus compliquée.