← Retour à l'outil
*

Cron · Lundi-vendredi · Jours ouvrés

Cron jours ouvrés : du lundi au vendredi

Mise à jour : mai 2026

Pour éviter le week-end, utilisez le dernier champ cron avec la plage 1-5, qui correspond à lundi-vendredi.

Générer un cron jours ouvrés →

Prochaines dates calculées localement

L'expression

0 9 * * 1-5  /chemin/vers/commande

Cette ligne lance la commande à 09:00, uniquement du lundi au vendredi. Les champs jour du mois et mois restent à *.

Variantes métier

  • */15 9-17 * * 1-5 : toutes les 15 minutes pendant les horaires de bureau.
  • 0 8 * * 1 : chaque lundi à 8 h.
  • 0 18 * * 5 : chaque vendredi à 18 h.
  • 0 0 * * 0,6 : week-end uniquement.

Attention aux jours fériés

Cron ne sait pas ce qu'est un jour férié. Pour exclure le 1er mai, Noël ou les jours fériés locaux, ajoutez une vérification dans le script lancé par la crontab.

Jours ouvrés, jours ouvrables et cron

Dans le langage courant, "jours ouvrés" signifie souvent lundi à vendredi. Cron ne connaît pas cette nuance juridique ou RH : il sait seulement comparer un numéro de jour de semaine. La plage 1-5 veut dire lundi, mardi, mercredi, jeudi et vendredi. Elle ne tient pas compte des jours fériés, des ponts, des fermetures d'entreprise ou des calendriers régionaux.

Si vous devez respecter un vrai calendrier métier, gardez l'expression cron simple, puis déléguez la décision au script. Par exemple, 0 8 * * 1-5 lance un script chaque matin de semaine, et le script vérifie une liste de jours fériés avant d'envoyer un rapport. Cette séparation est plus maintenable qu'une tentative de tout encoder dans cron. Elle permet aussi de gérer plusieurs pays, comme France, Belgique, Suisse ou Canada, sans rendre la crontab illisible.

Heures de bureau et fenêtres d'exécution

Un besoin fréquent est "toutes les X minutes pendant les heures ouvrées". La forme */15 9-17 * * 1-5 déclenche toutes les quinze minutes de 09:00 à 17:45, du lundi au vendredi. Pour une exécution horaire, utilisez 0 9-17 * * 1-5. Pour un traitement unique le matin, 0 8 * * 1-5 suffit.

La borne supérieure de l'heure est inclusive. Cela surprend souvent : 9-17 inclut l'heure 17. Si vous devez arrêter avant 17:00, terminez à 16. Si la règle exacte dépend de minutes, par exemple "jusqu'à 17:30", cron peut l'exprimer avec une liste plus détaillée, mais un contrôle dans le script devient parfois plus lisible. L'objectif n'est pas de produire l'expression la plus compacte, mais une planification compréhensible et sûre.

Éviter les doublons le lundi ou le premier du mois

Le piège classique apparaît quand on combine jour du mois et jour de semaine. 0 9 1 * 1-5 ne signifie pas forcément "le premier jour ouvré du mois". Dans beaucoup de crons Unix, cela signifie "le 1er du mois et tous les jours ouvrés". Le job peut donc partir beaucoup plus souvent que prévu.

Pour viser le premier jour ouvré du mois, il vaut mieux lancer un script chaque jour ouvré en début de mois, par exemple 0 9 1-7 * 1-5, puis vérifier dans le script qu'aucun jour ouvré précédent n'existait dans le mois. Cette logique est plus complexe, mais elle reflète la réalité du besoin. Cron exprime très bien "lundi à vendredi" ; il exprime moins bien les règles calendaires métier qui dépendent des jours fériés et du contexte.

Cas pratiques pour équipes et systèmes

Les crons jours ouvrés sont fréquents dans les systèmes internes : rapport de ventes à 08:00, synchronisation RH à 07:30, export comptable à 18:00, contrôle de facturation à midi, relance de notifications pendant les heures de support. Pour chaque cas, demandez-vous si le job doit vraiment s'arrêter le week-end ou s'il doit simplement éviter d'envoyer des messages aux utilisateurs. Une synchronisation technique peut continuer le samedi et le dimanche, tandis qu'un mail de rapport doit attendre le lundi.

Ajoutez des logs lisibles. Quand un job ne tourne pas le week-end, un trou dans les logs peut être normal. Un commentaire dans la crontab, comme # Rapport support, jours ouvrés 08:00, évite de chercher une panne le samedi. Pour les traitements sensibles, le script peut écrire "jour non ouvré, traitement ignoré" afin de distinguer un skip volontaire d'une absence d'exécution.

À vérifier avant mise en production

Pour une expression cron semaine seulement, testez toujours les prochaines dates sur plusieurs jours. Vous devez voir une pause le samedi et le dimanche, puis une reprise le lundi. Si le job dépend d'un calendrier RH ou d'un pays précis, ajoutez une table de jours fériés côté application. La crontab doit rester simple ; la règle métier détaillée doit rester visible dans le code.

Questions fréquentes

Puis-je écrire MON-FRI ?

Oui sur beaucoup d'implémentations : 0 9 * * MON-FRI est équivalent à 0 9 * * 1-5.

Comment exclure seulement le dimanche ?

Utilisez 1-6, soit lundi à samedi.

Le samedi vaut 5 ou 6 ?

Samedi vaut 6. Vendredi vaut 5.