fixmint
FR

Comment lire une expression cron, champ par champ

Par · · Lecture : 5 min

Une expression cron est une courte ligne de texte qui indique à un planificateur quand lancer une tâche. La forme habituelle comporte cinq champs séparés par des espaces : minute, heure, jour du mois, mois et jour de la semaine. La ligne 0 9 * * 1-5 correspond à 09:00 du lundi au vendredi. Chaque champ est un nombre, un nom, une liste, une plage ou un pas, ou * pour toutes les valeurs. Une tâche s'exécute à chaque instant où tous les champs correspondent.

Explicateur d'expression cronCron se lance à la mauvaise heureEssayer gratuitement

Les cinq champs

ChampValeurs autoriséesExemple
Minute0 à 5930 correspond à la minute 30 de l'heure
Heure0 à 239 correspond à 09:00, sur une horloge à 24 heures
Jour du mois1 à 3115 désigne le 15
Mois1 à 12, ou JAN à DEC3 ou MAR correspond à mars
Jour de la semaine0 à 6, ou SUN à SAT0 ou SUN correspond au dimanche, 1 au lundi

Certains systèmes acceptent aussi 7 pour le dimanche, mais pas tous, donc utilisez 0 ou SUN. Cron n'a pas de champ secondes dans cette forme, donc le plus petit pas est d'une minute.

Listes, plages, pas et noms

  • désigne toutes les valeurs du champ. * * * * s'exécute chaque minute.
  • Une liste utilise des virgules. 0 9,17 * * * s'exécute à 09:00 et à 17:00 tous les jours.
  • Une plage utilise un trait d'union. 1-5 dans le champ du jour de la semaine désigne du lundi au vendredi.
  • Un pas utilise une barre oblique. */15 dans le champ des minutes désigne 0, 15, 30 et 45. 10-30/5 désigne 10, 15, 20, 25 et 30.
  • Les noms comme MON-FRI peuvent remplacer les nombres. Ils sont plus faciles à lire, si votre planificateur les accepte.

Ces éléments se combinent. 0 8-18/2 * * * s'exécute à la minute 0 de chaque deuxième heure, de 08:00 à 18:00.

Planifications courantes

ExpressionSignification
* * * * *Chaque minute
/15 * * *Toutes les 15 minutes
0 * * * *À la minute 0 de chaque heure
0 2 * * *Tous les jours à 02:00
0 9 * * 1-509:00, du lundi au vendredi
0 9,17 * * *09:00 et 17:00 tous les jours
30 6 1 * *06:30 le 1er de chaque mois
0 0 * * 0Minuit tous les dimanches
0 0 1 1 *Minuit le 1er janvier
/5 9-17 * 1-5Toutes les 5 minutes de 09:00 à 17:55, du lundi au vendredi

Notez que 0 0 * * correspond à minuit, et 0 12 * * à midi. Se tromper d'heure est l'une des erreurs les plus fréquentes.

Jour du mois et jour de la semaine

Lorsque le champ du jour du mois et le champ du jour de la semaine sont tous deux restreints, la tâche s'exécute lorsque l'un ou l'autre correspond. C'est la règle classique de Vixie cron et de nombreux systèmes qui en dérivent. Ainsi, 0 0 13 * 5 s'exécute à minuit le 13 de chaque mois, et aussi chaque vendredi. On s'attend souvent à ce que cela ne concerne que le vendredi 13, et on obtient davantage d'exécutions que prévu.

Si l'un des deux champs vaut *, seul l'autre compte. Pour exécuter une tâche le vendredi 13, planifiez-la chaque vendredi et vérifiez la date dans le script. D'autres planificateurs, y compris certains services cloud, peuvent appliquer des règles différentes : consultez leur documentation.

Fuseaux horaires et heure d'été

Cron fonctionne selon l'horloge de la machine ou du service sur lequel il tourne, qui correspond normalement au fuseau horaire local de cette machine. Une tâche réglée sur 02:30 s'exécute à 02:30 sur cette horloge. Vérifiez d'abord le fuseau (sous Linux, date l'affiche). Si vous voulez que les tâches suivent une seule horloge partout, de nombreuses équipes font tourner leurs serveurs en UTC, et certains planificateurs permettent de définir un fuseau horaire pour chaque tâche.

L'heure d'été modifie l'horloge deux fois par an. Au printemps, de nombreux endroits passent directement de 02:00 à 03:00, si bien qu'une tâche prévue à 02:30 n'a pas de moment pour s'exécuter. En automne, la plage horaire de 01:00 à 01:59 se produit deux fois. Les planificateurs gèrent ces cas différemment : certains sautent la tâche, d'autres l'exécutent une fois, d'autres encore deux fois. Évitez de planifier les tâches pendant la plage de changement du petit matin, ou utilisez UTC, si la différence compte pour vous.

Six champs et Quartz

Certains planificateurs ajoutent un champ de secondes au début, donc /10 * * * * s'exécute toutes les 10 secondes. Le planificateur Quartz pour Java utilise les secondes, les minutes, les heures, le jour du mois, le mois, le jour de la semaine et une année facultative. Il ajoute quatre caractères spéciaux :

  • ? signifie « aucune valeur précise ». Quartz exige sa présence dans le champ du jour du mois ou dans celui du jour de la semaine, selon celui que vous ne définissez pas.
  • L signifie dernier. L dans le champ du jour du mois désigne le dernier jour du mois, et 6L dans le champ du jour de la semaine désigne le dernier vendredi.
  • W signifie le jour de semaine le plus proche. 15W désigne le jour de semaine le plus proche du 15, et il ne passe pas dans un autre mois.
  • # signifie le n-ième jour de semaine. 6#3 désigne le troisième vendredi.

Quartz numérote les jours différemment de la forme à cinq champs. Son 1 correspond au dimanche et son 7 au samedi, donc du lundi au vendredi s'écrit 2-6, et non 1-5. Vérifiez toujours le format utilisé par votre planificateur avant de copier une ligne.

Erreurs courantes

  • */7 dans le champ des minutes. Les valeurs sont 0, 7, 14, et ainsi de suite jusqu'à 56. La suivante serait 63, qui n'existe pas, donc l'exécution après 56 a lieu à la minute 0 de l'heure suivante. L'écart n'est que de quatre minutes, et l'espacement est irrégulier. Utilisez un pas qui divise 60 de façon exacte, comme 5, 10, 15 ou 30.
  • Le 30 février. Cette date n'existe pas, donc 0 0 30 2 * ne s'exécute jamais. Il en va de même du 31 dans un mois de 30 jours. Avec la règle « l'un ou l'autre », une restriction sur le jour de la semaine peut tout de même déclencher une exécution les autres jours, vérifiez donc le résultat.
  • Heure 24 ou minute 60. Ces valeurs sont hors plage. La plupart des planificateurs les refusent à l'enregistrement, mais pas tous.
  • Attendre des secondes. Une ligne à cinq champs ne s'exécute qu'à des minutes entières.
  • Confondre cron et les expressions régulières. Dans cron, signifie toutes les valeurs. Dans une expression régulière, signifie répéter l'élément qui le précède. Utilisez le Testeur regex pour les motifs, et gardez les lignes cron à part.

Vérifiez les prochaines exécutions

Avant de vous fier à une planification, lisez la ligne en mots simples et listez ses prochaines heures d'exécution. L'Explicateur d'expression cron fait les deux, et c'est le moyen le plus rapide de repérer la règle « l'un ou l'autre » ou un pas inhabituel.

Réponses rapides

Le premier champ désigne-t-il les minutes ou les secondes ?

Les minutes, dans la forme standard à cinq champs. Seuls certains planificateurs à six champs ajoutent les secondes, et ils les placent en premier.

Pourquoi ma tâche s'exécute-t-elle les vendredis et aussi le 13 ?

Les champs du jour du mois et du jour de la semaine sont tous deux définis, donc la tâche s'exécute lorsque l'un ou l'autre correspond. Mettez l'un des deux champs à * si vous voulez seulement l'autre.

Cron utilise-t-il UTC ?

Seulement si la machine ou le service est réglé sur UTC. Sinon, il utilise le fuseau horaire local de ce système.

Traduit de Version originale anglaise avec l’aide de l’IA.

Commentaires

    Aucun commentaire pour l’instant. Soyez le premier.

    Votre note (facultatif)

    Votre e-mail n’est jamais affiché ni conservé.

    Couverture de Agentic AI in the BrowserAgentic AI in the Browser

    Des cas d'usage pour des workflows d'IA respectueux de la vie privée et fonctionnant directement dans le navigateur : la même idée du « faites-le sur votre appareil » sur laquelle repose fixmint.

    $4.99Acheter sur GumroadEn anglais