Outils de développement · Générateur Crontab
Syntaxe des étapes et des plages Cron : */15, 1-5, listes et comment elles se combinent
· Comment ça marche
cron Calendrier planification flux de travail du développeur
Les étapes, les plages et les listes font partie de la syntaxe cron que les gens copient sans comprendre. Cet article explique chacun d'eux, comment ils nichent et surprend comme */7 ne signifiant pas « tous les sept jours ».
Toutes les 15 minutes, mais seulement de 9 à 5 — l'expression naïve se déclenche également la nuit
« Toutes les quinze minutes pendant les heures de bureau » contient deux restrictions indépendantes. Le champ des minutes nécessite des marques de quart d'heure, tandis que le champ des heures nécessite une étendue délimitée. Écrire uniquement `*/15 * * * *` résout la première mi-temps et produit toujours des courses tout au long de la nuit. L'expression doit coder les deux contraintes avant de dire quoi que ce soit sur les jours de la semaine.
ToolAcre analyse les cinq champs de planification, pas une commande. Commencez par `*/15 9-17 * * 1-5`, puis inspectez la phrase et exécutez l'aperçu suivant. Cette vérification détecte l'erreur courante consistant à mettre `9-17` dans la position des minutes ou à laisser le champ du jour de la semaine sans restriction. Le générateur crée et explique une expression ; il n'installe ni n'exécute de travail.
Plages — 1-5 et 9-17 en tant que plages inclusives dans un seul champ
Un trait d'union crée une plage inclusive à l'intérieur d'un champ. `9-17` en position horaire s'étend à neuf valeurs : 9 à 17. De même, `1-5` en position de jour de la semaine s'étend du lundi au vendredi car cet analyseur mappe le dimanche à 0, le lundi à 1 et ainsi de suite. Les deux points de terminaison participent, donc 17:00 se situe dans la plage horaire sélectionnée.
Les plages ne peuvent pas s'étendre au-delà d'une limite de champ. L'analyseur rejette une forme inversée telle que `17-9` et suggère de diviser les valeurs souhaitées en deux éléments de liste. Ce refus est utile car les règles d'emballage diffèrent selon les produits de planification. Ici, une plage se déplace toujours vers le haut entre des valeurs qui satisfont déjà aux limites numériques ou de noms acceptés du champ.
Étapes — */15 et 9-17/2, et pourquoi l'étape redémarre à la limite inférieure du champ plutôt que de compter en continu
Une barre oblique choisit chaque nième valeur à partir d'un point de départ. `*/15` dans le champ des minutes commence à son minimum, zéro, et s'étend jusqu'à 0, 15, 30 et 45. `9-17/2` commence à 9 et donne 9, 11, 13, 15 et 17. L'étape appartient à un champ ; il ne compte pas les minutes écoulées au-delà des limites horaires.
L'analyseur accepte également un simple début avec une étape. `5/15` dans le champ des minutes signifie 5, 20, 35 et 50 car le point final supérieur implicite est 59. Les pas doivent être des nombres entiers positifs et ne peuvent pas dépasser la taille de la plage complète du champ. Une étape nulle, non numérique ou surdimensionnée reçoit une erreur de validation spécifique au champ au lieu d'une interprétation devinée.
Les listes peuvent combiner des valeurs, des plages et des plages échelonnées dans un seul champ.
Les virgules réunissent plusieurs pièces au sein d'un même champ. Un simple `1,15,30` nomme des valeurs de trois minutes. Une entrée plus élaborée peut combiner une valeur isolée, une plage inclusive et une plage échelonnée : le `0,10-20/5,59` testé s'étend à 0, 10, 15, 20 et 59. Les résultats en double sont supprimés et les valeurs développées sont triées avant que les calculs ultérieurs ne les utilisent.
Cette grammaire est compositionnelle mais toujours étroite. Chaque élément virgule peut contenir une barre oblique et une plage doit avoir exactement deux points de terminaison non vides. Une virgule parasite, plusieurs barres obliques ou une plage inachevée est rejetée avec une raison nommant le champ. Cela rend une expression mixte révisable sans prétendre qu'une ponctuation mal formée a une signification conventionnelle.
Exemple concret : */15 9-17 * * 1-5 — énumérant les minutes qu'il produit et le cas limite 17:45
Pour `*/15 9-17 * * 1-5`, les valeurs des minutes sont 00, 15, 30 et 45 ; les heures vont du 09 au 17 ; et les valeurs des jours de la semaine vont du lundi au vendredi. Chaque jour de la semaine inclus, le premier candidat est 09:00 et le dernier est 17:45. Il n'y a pas de 18:00 car 18 est en dehors de la plage horaire.
L'avantage de la dernière exécution illustre pourquoi l'expansion des champs surpasse la sténographie conversationnelle. « Neuf heures moins cinq » peut signifier s'arrêter à 17:00 pour un lecteur et inclure l'heure complète de cinq heures pour un autre. Le champ horaire de Cron sélectionne un compartiment horaire, puis le champ minutes sélectionne les positions à l'intérieur de celui-ci. Si 17:45 n’est pas souhaité, la limite souhaitée nécessite une expression différente ou une logique côté commande.
Une étape du jour du mois s'étend du jour 1 de chaque mois ; ce n'est pas un intervalle d'une semaine écoulée
`*/7` en jour du mois s'étend à partir du minimum de 1 de ce champ, produisant 1, 8, 15, 22 et 29 là où ces dates existent. Au début du mois suivant, le champ recommence à 1. Il décrit donc des dates de calendrier sélectionnées, et non un intervalle de sept jours qui avance continuellement. Février et les mois plus courts manquent tout simplement de dates élevées.
La même syntaxe a une valeur de départ différente dans un autre champ. `*/7` minutes commence à 0, tandis que `*/7` jours du mois commencent à 1. L'analyseur de ToolAcre dérive la séquence de chaque spécification de champ et son aperçu recherche les dates du calendrier. Pour une cadence hebdomadaire réelle, limitez le jour de la semaine au lieu de traiter le pas du jour du mois comme une durée écoulée.
Les opérateurs non pris en charge sont refusés plutôt qu'interprétés comme un autre dialecte cron
Cet analyseur à cinq champs n'implémente pas `L`, `W`, `#` ou `?`. Ces caractères ne sont pas ignorés silencieusement et ne sont pas présentés comme une syntaxe crontab portable. Six champs sont également refusés, avec une explication selon laquelle la position de leader supplémentaire appartient à un style de planificateur orienté secondes plutôt qu'au format que lit cet itinéraire.
La limite est délibérée : minute, heure, jour du mois, mois et jour de la semaine sont ici la grammaire positionnelle complète. Avant de déplacer une expression depuis un autre planificateur, comptez ses champs et identifiez ses opérateurs. Le générateur peut valider son propre dialecte ; il ne peut pas certifier Quartz, la syntaxe du calendrier systemd ou la variation d'un service cloud.
À retenir : les étapes signifient « en partant du bas de la plage » – et le générateur explique une expression d'étape avec des mots que vous pouvez vérifier
Les plages définissent une étendue inclusive, les virgules fusionnent des éléments et des barres obliques comme exemples de valeurs à partir d'un début spécifique au champ. La lecture de ces opérations dans cet ordre transforme un jeton dense en un ensemble fini qui peut être inspecté. Il explique également les contours tels que 17:45 sans s'appuyer sur une phrase copiée dont l'auteur aurait pu vouloir dire autre chose.
Utilisez le générateur comme surface de révision : saisissez l'expression, lisez la description, inspectez les avertissements et comparez les cinq prochaines courses d'horloge murale dans la zone prévue. Placez ensuite les cinq champs vérifiés à côté de la commande réelle dans votre propre environnement. La construction du calendrier et l’exécution des travaux restent des responsabilités distinctes.