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.
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,15dans le champ jour du mois signifie le 1er et le 15.-— une plage.9-17dans le champ heure signifie de 09:00 à 17:00./— un pas.*/15dans 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
| Expression | Signification |
|---|---|
*/15 * * * * | Toutes les 15 minutes |
0 9 * * 1-5 | En 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 * * 0 | Le 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.