Blog

La syntaxe cron expliquée, champ par champ

Un guide pratique pour lire et écrire des expressions cron — les cinq champs, les opérateurs, les recettes courantes et le piège des fuseaux horaires.

SteadyCron cronplanificationguide

Les expressions cron paraissent cryptiques, mais elles suivent une grammaire réduite et facile à apprendre. Dès que vous savez lire les cinq champs et les quatre opérateurs, 30 4 1,15 * * cesse d’être une énigme. Voici un guide pratique — et il existe un outil d’explication gratuit si vous préférez simplement coller une expression et voir ce qu’elle fait.

Les cinq champs

Une expression cron standard comprend cinq champs séparés par des espaces :

┌───────────── minute        (0 - 59)
│ ┌─────────── heure         (0 - 23)
│ │ ┌───────── jour du mois  (1 - 31)
│ │ │ ┌─────── mois          (1 - 12)
│ │ │ │ ┌───── jour de sem.  (0 - 6, dimanche = 0)
│ │ │ │ │
* * * * *

De gauche à droite : minute, heure, jour du mois, mois, jour de la semaine.

Les quatre opérateurs

  • * — chaque valeur. * * * * * signifie chaque minute.
  • , — une liste. 1,15 dans le champ jour du mois signifie le 1er et le 15.
  • - — une plage. 9-17 dans le champ heure signifie de 09:00 à 17:00.
  • / — un pas. */15 dans le champ minute signifie toutes les 15 minutes.

Vous les combinez librement : 0 9-17 * * 1-5 signifie « à l’heure pile, de 9 h à 17 h, en semaine ».

Des recettes que vous utiliserez vraiment

ExpressionSignification
*/15 * * * *Toutes les 15 minutes
0 9 * * 1-5En semaine à 09:00
30 4 1,15 * *04:30 le 1er et le 15
0 */4 * * *Toutes les 4 heures
0 2 * * *Tous les jours à 02:00
0 0 * * 0Le dimanche à minuit

Le piège jour-du-mois / jour-de-la-semaine

Si vous définissez les deux champs (jour du mois et jour de la semaine) sur des valeurs autres que *, la plupart des implémentations de cron le traitent comme un OU, pas un ET. 0 0 13 * 5 ne signifie pas « vendredi 13 » — cela signifie « le 13 de chaque mois, et chaque vendredi ». Laissez l’un des deux sur * sauf si vous voulez vraiment l’union.

Le piège des fuseaux horaires

La plus grande source de surprises avec cron n’est pas la syntaxe — c’est le temps. Le cron serveur tourne généralement en UTC, mais vous pensez en heure locale, et deux fois par an l’heure d’été décale l’horloge. Une tâche réglée sur « 09:00 » dans une crontab UTC dérive d’une heure au printemps et à l’automne par rapport à votre bureau.

La solution est de planifier dans un vrai fuseau horaire et de laisser le planateur gérer l’heure d’été. SteadyCron attribue à chaque tâche son propre fuseau IANA (comme Europe/Paris) et maintient « 09:00 chaque jour de semaine » à 09:00 heure locale, toute l’année.

Essayez-le

Collez n’importe quelle expression dans l’ explicateur d’expression cron pour la voir en langage clair et prévisualiser les prochaines exécutions dans votre fuseau — puis planifiez-la sur SteadyCron avec réessais et alertes.