Je ne pense pas que ce soit possible avec cron
seul car la syntaxe ne permet pas permet pas "à 27 ans th sauf le dimanche" . Il permet seulement pour "soit 27 th ou non-dimanches (ou les deux) " .
Je suggère soit de changer command.sh
pour sortir immédiatement en dehors des dimanches ou de mettre ce chèque dans le cronjob :
1 0 27 12 * test $(date +\%u) -ne 7 && command.sh
Dans le Shell, date +%u
renvoie le jour de la semaine (1 7, 1 étant le lundi). En un cronjob nous devons échapper à cette %
signe ( \%
). La commande va vérifiera si le jour actuel n'est pas un dimanche et n'exécutera qu'alors command.sh
.
Le cronjob sera exécuté tous les 27 décembre. th à 00:01 heure, quel que soit le jour de la semaine, mais seulement pour les jours autres que le dimanche. command.sh
est exécuté parce que le test précédent ne réussit que que pour eux.
Note : J'utilise parfois https://crontab.guru pour vérifier les horaires de mon cronjob. C'est assez pratique.
Votre définition se traduit par "A 00:01 le jour du mois 27 y tous les jours de la semaine, du lundi au samedi en décembre". donc c'est tout le contraire de ce que vous voulez.
Desde el page d'accueil :
Note : Le jour d'exécution d'une commande peut être spécifié par deux champs - jour du mois, et jour de la semaine. Si les deux champs sont restreints (c'est-à-dire que ne sont pas *), la commande sera exécutée lorsque o bien correspond au champ l'heure actuelle. Par exemple, 30 4 1,15 * 5
ferait en sorte qu'une commande à 4h30 du matin le 1er et le 15 de chaque mois, plus tous les vendredi. On peut cependant obtenir le résultat souhaité en ajoutant un test à la commande (voir le dernier exemple dans EXEMPLE DE FICHIER CRON ci-dessous).
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"