Syntaxe des expressions cron
Une expression cron est cinq champs qui décrivent quand quelque chose doit s'exécuter. Chaque champ indique quelles valeurs de son unité sont acceptables, et la tâche s'exécute à chaque minute où les cinq sont d'accord. C'est tout le modèle : pas de notion de durée, pas d'« tous les 90 minutes », et pas d'état du prochain démarrage stocké nulle part.
Les champs se lisent de gauche à droite comme minute, heure, jour du mois, mois, jour de la semaine. Les exemples en bas sont ceux que les gens recherchent vraiment, et chacun d'eux passe par l'analyseur cron du site lui-même avant que cette page soit construite.
La dernière section liste la syntaxe qui ressemble à cron mais n'est pas acceptée ici : les extensions Quartz et Jenkins, et la forme à six champs avec les secondes. Elles valent le coup de reconnaître, car une expression copiée qui en utilise une va simplement échouer.
Les cinq champs
7Une ligne cron est cinq champs séparés par des espaces, puis la commande. Chaque champ doit être présent ; il n'y a pas de moyen d'en omettre un.
| Expression | Plage | Sens |
|---|---|---|
| * * * * * | min hod dom mes dow | Les cinq champs en ordre : minute, heure, jour du mois, mois, jour de la semaineCinq astérisques signifient chaque minute de chaque jour — l'expression la plus lâche. |
| minute | 0-59 | Premier champ |
| hour | 0-23 | Deuxième champ, sur une horloge 24 heures |
| day of month | 1-31 | Troisième champUn jour qui n'existe pas dans un mois donné est simplement ignoré — 31 s'exécute sept fois par an, pas douze. |
| month | 1-12 | Quatrième champ |
| day of week | 0-7 | Cinquième champ, dimanche en premier0 et 7 signifient tous les deux dimanche, c'est pourquoi la plage va jusqu'à sept plutôt que six. |
| 0 5 13 * 5 | Quand les deux champs jour sont limités, cron s'exécute sur l'un ou l'autre — pas sur les deuxCeci s'exécute le 13 et tous les vendredis, donc ce n'est pas « vendredi 13 ». C'est la seule règle cron qui surprend tout le monde. |
Opérateurs
10Les quatre mêmes opérateurs fonctionnent dans chaque champ ; seules les nombres qu'ils acceptent changent.
| Expression | Plage | Sens |
|---|---|---|
| * | Chaque valeur que le champ autorise | |
| 1,15,30 | Une liste de valeurs individuelles | |
| 9-17 | Une plage inclusive | |
| */15 | Chaque nème valeur dans tout le champ*/15 dans le champ des minutes signifie :00, :15, :30 et :45 — comptage depuis le bas de la plage, pas depuis maintenant. | |
| 9-17/2 | Chaque nème valeur dans une plage | |
| 5/10 | Chaque nème valeur à partir d'un point de départ jusqu'à la fin du champ | |
| 0,30 9-17 * * 1-5 | Les opérateurs se combinent librement dans n'importe quel champToutes les demi-heures, entre neuf et dix-sept, du lundi au vendredi. | |
| JAN-DEC | 1-12 | Noms de mois, trois lettres, insensible à la casse |
| SUN-SAT | 0-6 | Noms de jours, trois lettres, insensible à la casse |
| 7 | 0 | Dimanche, écrit l'autre façon |
Macros de raccourci
7Sept noms qui représentent une expression entière. Ils sont une commodité du format crontab plutôt que de la grammaire des champs, donc un planificateur qui lit les chaînes cron ne les accepte pas nécessairement.
| Expression | Plage | Sens |
|---|---|---|
| @hourly | 0 * * * * | Au sommet de chaque heure |
| @daily | 0 0 * * * | Une fois par jour à minuit |
| @midnight | 0 0 * * * | La même chose que @daily |
| @weekly | 0 0 * * 0 | Une fois par semaine, dimanche à minuit |
| @monthly | 0 0 1 * * | Le premier du mois à minuit |
| @yearly | 0 0 1 1 * | Le premier janvier à minuit |
| @annually | 0 0 1 1 * | La même chose que @yearly |
Exemples travaillés
14Lisez-en un de droite à gauche quand ça cesse d'avoir du sens : le champ le plus brut est à droite, et il décide quels jours les plus fins sont même consultés.
| Expression | Plage | Sens |
|---|---|---|
| * * * * * | Chaque minute | |
| */5 * * * * | Tous les cinq minutes | |
| 0 * * * * | Chaque heure, à l'heure | |
| 0,30 * * * * | Toutes les demi-heures | |
| 0 3 * * * | Chaque jour à 03:00 | |
| 0 9,17 * * * | Deux fois par jour, à 09:00 et 17:00 | |
| */15 9-17 * * 1-5 | Tous les quarts d'heure pendant les heures de bureau en semaine | |
| 0 8 * * 1-5 | Jours de semaine à 08:00 | |
| 0 10 * * 6,0 | Samedis et dimanches à 10:00 | |
| 30 7 * * MON | Lundis à 07:30 | |
| 0 0 1 * * | Minuit le premier de chaque mois | |
| 0 0 28-31 * * | Chaque jour dans le dernier tronçon du moisLe cron standard n'a pas de « dernier jour du mois ». Ceci s'exécute jusqu'à quatre fois ; la solution habituelle est un script qui vérifie la date et quitte tôt. | |
| 0 0 1 1,4,7,10 * | Minuit le premier de chaque trimestre | |
| 0 0 1 1 * | Une fois par an, au début du 1er janvier |
Extensions que ce site n'accepte pas
6Quartz, Jenkins et certains planificateurs cloud les ajoutent. Elles sont listées pour que vous les reconnaissiez dans le crontab de quelqu'un d'autre — l'analyseur ici rejette chacune, tout comme le cron livré avec Linux.
| Expression | Plage | Sens |
|---|---|---|
| ? | « Pas de valeur spécifique », dans le champ jour que l'autre limite déjà | |
| L | Le dernier jour du mois, ou le dernier jour de semaine donné | |
| 15W | Le jour de semaine le plus proche du 15 | |
| FRI#3 | Le troisième vendredi du mois | |
| */30 * * * * * | Un sixième champ pour les secondes, à l'avantSix champs, pas cinq. Quartz et plusieurs bibliothèques utilisant des langages utilisent cette forme ; le fichier crontab non. | |
| @reboot | Exécuter une fois au démarrage de la machineRéelle dans crontab, mais ce n'est pas un horaire — il n'y a pas de prochain démarrage à calculer, c'est pourquoi l'analyseur ici la refuse. |