Aide-mémoire cron
La syntaxe crontab en tableaux : les cinq champs, les caractères spéciaux, les raccourcis, et les expressions courantes traduites en français.
Une expression cron décrit un calendrier d'exécution en cinq champs séparés par des espaces. Elle se lit de gauche à droite, du plus fin au plus large.
* * * * *
│ │ │ │ └── jour de la semaine (0-7, 0 et 7 = dimanche)
│ │ │ └───── mois (1-12)
│ │ └──────── jour du mois (1-31)
│ └─────────── heure (0-23)
└────────────── minute (0-59)Pour construire une expression pas à pas, la traduire en français et voir ses prochaines dates d'exécution, utilisez le générateur de cron du site.
Les cinq champs
| Champ | Plage | Remarque |
|---|---|---|
| Minute | 0–59 | 0 = à l'heure pile |
| Heure | 0–23 | Sur 24 heures, dans le fuseau de la machine ou du planificateur |
| Jour du mois | 1–31 | Un 31 ne se déclenche que les mois qui comptent 31 jours |
| Mois | 1–12 | 1 = janvier. Beaucoup d'implémentations acceptent aussi JAN à DEC |
| Jour de la semaine | 0–7 | 0 et 7 désignent tous deux le dimanche ; 1 = lundi. Souvent aussi SUN à SAT |
Caractères spéciaux
Ces notations forment le socle commun à toutes les implémentations de cron, et sont les seules acceptées par le générateur du site.
| Caractère | Sens | Exemple |
|---|---|---|
| * | Toutes les valeurs du champ | * dans le champ heure : chaque heure |
| , | Liste de valeurs distinctes | 1,15 dans le champ jour du mois : le 1er et le 15 |
| - | Intervalle borné, bornes incluses | 9-18 dans le champ heure : de 9 h à 18 h |
| / | Pas, appliqué à * ou à un intervalle | */15 dans le champ minute : toutes les 15 minutes |
| 8-18/2 | Pas à l'intérieur d'un intervalle | Une exécution toutes les 2 heures entre 8 h et 18 h |
Extensions non standard
Ces caractères n'appartiennent pas au cron d'Unix. Ils viennent de Quartz et de ses dérivés : avant de les employer, vérifiez que votre planificateur les gère.
| Caractère | Sens |
|---|---|
| L | Dernier jour du mois, ou dernier jour de semaine donné. Extension Quartz et compatibles |
| W | Jour ouvré le plus proche de la date indiquée. Extension Quartz |
| # | Nième occurrence d'un jour dans le mois : 5#3 pour le 3e vendredi. Extension Quartz |
| ? | « Sans importance », dans le champ jour du mois ou jour de la semaine. Quartz exige un ? dans l'un des deux |
Raccourcis
Les crontabs de type Vixie cron acceptent ces alias à la place des cinq champs. Ils sont pratiques mais moins portables : tous les ordonnanceurs ne les implémentent pas.
| Raccourci | Équivalent | Sens |
|---|---|---|
| @yearly | 0 0 1 1 * | Une fois par an, le 1er janvier à minuit. Alias : @annually |
| @monthly | 0 0 1 * * | Le 1er de chaque mois à minuit |
| @weekly | 0 0 * * 0 | Chaque dimanche à minuit |
| @daily | 0 0 * * * | Tous les jours à minuit. Alias : @midnight |
| @hourly | 0 * * * * | Au début de chaque heure |
| @reboot | — | Une fois au démarrage du démon cron. Sans équivalent en cinq champs, et absent de certaines implémentations |
Expressions cron courantes
| Expression | Traduction |
|---|---|
| * * * * * | Toutes les minutes |
| */5 * * * * | Toutes les 5 minutes |
| 0 * * * * | Toutes les heures, à la minute 0 |
| 30 * * * * | Toutes les heures, à la minute 30 |
| 0 */2 * * * | Toutes les 2 heures, à l'heure pile |
| 0 3 * * * | Tous les jours à 3 h 00 |
| 0 9,18 * * * | Tous les jours à 9 h 00 et à 18 h 00 |
| */15 9-18 * * * | Toutes les 15 minutes, de 9 h à 18 h inclus (dernière exécution à 18 h 45) |
| 0 9 * * 1-5 | Du lundi au vendredi à 9 h 00 |
| 0 8 * * 1 | Chaque lundi à 8 h 00 |
| 0 0 * * 0 | Chaque dimanche à minuit |
| 0 0 1 * * | Le 1er de chaque mois à minuit |
| 0 4 1,15 * * | Le 1er et le 15 de chaque mois à 4 h 00 |
| 0 0 1 1 * | Le 1er janvier à minuit |
| 0 6 * * 6 | Chaque samedi à 6 h 00 |
| 5 0 * * * | Tous les jours à 0 h 05 |
| 0 22 * * 1-5 | Du lundi au vendredi à 22 h 00 |
| 0 0 1 */3 * | Le 1er janvier, avril, juillet et octobre à minuit — un trimestre sur quatre |
Collez n'importe laquelle de ces expressions dans le générateur de cron pour en lire la description et ses prochaines exécutions calculées dans votre fuseau.
Questions fréquentes
Les deux conditions sont combinées par un OU, pas par un ET. L'expression 0 0 13 * 5 se déclenche chaque 13 du mois ET chaque vendredi, pas seulement les vendredis 13. C'est la règle standard de cron, et le générateur du site la signale explicitement dans sa description en français. Pour un vrai « vendredi 13 », il faut soit un test dans le script appelé, soit l'extension # d'un planificateur qui la propose.
Dans celui de la machine ou du service qui exécute la tâche, pas dans celui de l'auteur de la crontab. Un serveur réglé sur UTC déclenchera 0 9 * * * à 11 h en heure d'été française. Beaucoup d'ordonnanceurs modernes permettent de fixer un fuseau explicite ; les crontabs Unix classiques s'appuient sur le fuseau du système, ou sur la variable CRON_TZ quand l'implémentation la gère.
Non. Le cron d'Unix ne déclenche que les échéances survenues pendant qu'il tourne : si la machine est éteinte à l'heure prévue, l'exécution est simplement perdue. C'est précisément le rôle d'anacron, conçu pour les postes qui ne fonctionnent pas en continu. Les changements d'heure sont un autre cas particulier : selon l'implémentation, une exécution peut être sautée au printemps ou rejouée à l'automne.
Le cron d'Unix utilise cinq champs, dont le plus fin est la minute. Certains environnements — Quartz, Spring, plusieurs bibliothèques Node.js — ajoutent un champ de secondes en tête, ce qui donne six champs, et Quartz en accepte même un septième pour l'année. Une expression copiée d'un contexte à l'autre change alors complètement de sens : vérifiez toujours le nombre de champs attendu par votre planificateur.
Non. Son analyseur ne reconnaît que la syntaxe à cinq champs numériques, avec l'astérisque, la virgule, l'intervalle et le pas. Les raccourcis en arobase, les noms abrégés de mois et de jours et les extensions L, W, # et ? provoquent une erreur explicite indiquant le champ fautif. Ces notations restent documentées ici parce que vous les rencontrerez dans des crontabs réelles.
En la lisant traduite et en regardant ses prochaines dates d'exécution. Le générateur de cron du site fait les deux : il décrit l'expression en français et calcule les prochaines occurrences dans le fuseau local de votre navigateur, ce qui rend immédiatement visible une erreur de champ ou une confusion entre jour du mois et jour de la semaine.