43 votes

Exécuter une tâche cron le premier lundi de chaque mois?

Je voudrais exécuter un travail à partir de cron à 8h30 le premier lundi de chaque mois. La page Wikipedia de cron dit

Alors que normalement le travail est exécuté lorsque les champs de spécification du temps/date concordent tous avec le temps et la date actuels, il y a une exception : si à la fois "jour du mois" et "jour de la semaine" sont restreints (pas "*"), alors soit le champ "jour du mois" (3) ou le champ "jour de la semaine" (5) doit correspondre au jour actuel.

(mon soulignement)

Cela signifie-t-il que je ne peux pas faire le premier lundi du mois, je ne peux faire que le premier (ou autre) jour du mois ? Je ne vois pas de solution.

0voto

Pieter Points 1622

Je crois que cela résout le problème de manière plus élégante :

30 8 1-7 * 1 /run/your/job.sh

0voto

Chris Hubbard Points 101

Cet usage devrait être le plus universel et évite le problème de localisation.

[ `/bin/date +\%u` -eq 1 ]

le premier lundi du mois à 6h ressemblerait à ceci dans /etc/crontab

00 6 1-7 * *    root    [ `/bin/date +\%u` -eq 1 ] && /run/yourjob.sh

0voto

Paul Perrick Points 101

J'avais besoin du même résultat, mais je voulais utiliser un cron pur. J'espère que cela améliore la réponse acceptée.

Pour moi, j'avais besoin que cela s'exécute le premier lundi de chaque mois à midi.

Donc, cela devrait s'exécuter : à midi, dans les 7 premiers jours du mois, un lundi : 0 12 1-7 * 1

https://crontab.guru/#0_12_1-7_*_1

-1voto

SIBHI S Points 121
0 9 1-7 * 1 * 

Ceci fonctionnera pour tous les lundis de chaque mois.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X