Français

Outils de développement · Générateur Crontab

Pourquoi cron n'a pas de champ de secondes et d'où viennent les expressions à six champs

· Contexte

cron Calendrier dialectes validation

Cinq champs cron acceptés à côté d'un champ de sixième seconde rejeté
Illustration vectorielle originale de ToolAcre

Une expression à six champs n'est pas une expression cron, même si elle y ressemble. Cet article explique pourquoi le cron Unix s'arrête en quelques minutes et comment les planificateurs Quartz, Spring et Cloud ont étendu la grammaire.

Une expression à six champs appartient à un autre style de planificateur, pas à cet analyseur

Lorsque ToolAcre voit six parties séparées par des espaces, il les refuse et explique que son format a exactement cinq positions : minute, heure, jour du mois, mois et jour de la semaine. Le message indique qu'un style de seconde en tête apparaît dans la syntaxe Quartz ou de type systemd. Il ne laisse pas tomber silencieusement le premier jeton.

Ce refus empêche la corruption de position. Supprimer un jeton sans comprendre la grammaire source peut modifier toutes les valeurs restantes. La traduction commence par identifier la signification de chaque champ source et si le calendrier prévu est représentable dans la cible à cinq champs.

Le référentiel prouve la grammaire minute-première, et non la raison historique pour laquelle cron utilise les minutes

Le tableau de champs implémenté commence à la minute et se termine au jour de la semaine. Aucune spécification de secondes ou d’année n’existe. Les tests nécessitent un nombre exact de champs et rejettent les expressions plus courtes et plus longues. Cela suffit pour documenter la grammaire actuelle.

Le classeur proposait une explication historique basée sur un démon se réveillant une fois par minute. Ce référentiel ne contient pas l'implémentation d'archives nécessaire pour prouver cette origine. L’article dit donc seulement que le modèle de ToolAcre a une résolution minute et pas de position en secondes.

Les détails du quartz au-delà du style des secondes principales ne sont pas implémentés ici

Le message d'erreur source nomme Quartz comme exemple de style commençant par les secondes, mais l'analyseur n'implémente pas les opérateurs Quartz ni les positions facultatives. Les caractères tels que `?`, `L`, `W` et `#` échouent au lecteur de valeurs ordinaires. Ils ne sont ni traduits ni expliqués en tant que syntaxe prise en charge.

Évitez d'utiliser ToolAcre comme validateur Quartz. Une expression source valide peut coder des relations que cron à cinq champs ne peut pas représenter. Lisez la documentation source, énoncez l'exigence en mots et reconstruisez uniquement la partie prise en charge par la grammaire cible.

Les grammaires des planificateurs Spring et Cloud sont en dehors de l'ensemble des preuves

Les noms de framework et de planificateur cloud dans le classeur nécessitent leur propre documentation à jour. Le référentiel n'a pas de schéma de planification Spring, EventBridge, Kubernetes ou GitHub Actions. Leurs décomptes de champs, leurs alias et leurs politiques de fuseau horaire ne doivent pas être résumés de mémoire ici.

La similarité n'est pas la compatibilité. Deux produits peuvent tous deux appeler une chaîne cron tout en attribuant différentes positions ou sémantiques de jour. L'analyseur strict à cinq champs de ToolAcre est précieux car il s'arrête à sa limite au lieu d'accepter une expression dont il ne peut pas préserver le sens.

Exemple concret : reconstruire un horaire de semaine représentable en quart d'heure

Supposons que l'exigence de source soit toutes les quinze minutes pendant les heures 9 à 17 en semaine, et qu'aucun opérateur étranger n'a de signification supplémentaire. Dans ToolAcre, la forme représentable est `*/15 9-17 * * MON-FRI`. L'analyseur développe les quarts d'heures, les heures incluses et les jours de la semaine nommés.

La description et l'aperçu exposent ensuite l'interprétation cible, y compris un candidat quotidien final à 17:45. Comparez cela avec le comportement réel du planificateur source avant d’appeler l’équivalent de traduction. Le formulaire à cinq champs n'est correct que pour l'exigence verbale établie lors de la traduction.

Les boucles de commandes inférieures à la minute ne sont ni générées ni recommandées.

Le travail en sous-minutes ne peut pas être exprimé car la minute est le plus petit champ. Le classeur suggérait une boucle à l'intérieur d'une commande, mais ToolAcre ne génère, n'exécute ni ne supervise les boucles. Un tel modèle introduit des problèmes de timing, de chevauchement et d’arrêt en dehors de son modèle de calendrier.

Choisissez un runtime conçu pour la résolution requise et vérifiez-le ici. Ne déguisez pas une exigence de secondes en cron à cinq champs en plaçant les secondes dans la tranche des minutes. Le calendrier résultant serait plus lent et sémantiquement différent malgré une validation numérique réussie dans certains cas.

Les opérateurs de fin de mois étrangers restent non traduits

Les opérateurs de fin de mois et de jours de semaine d'autres grammaires sont également hors de portée. Les supprimer peut élargir ou réduire les dates de manière imprévisible. ToolAcre prend en charge les valeurs ordinaires, les noms, les plages, les listes et les étapes, ainsi que ses alias documentés ; cet ensemble définit le plafond de traduction.

Lorsque l'exigence dépasse le plafond, signalez « non représentable » et conservez un planificateur qui la prend en charge ou reconcevez l'action. Une réécriture avec perte lors de l'analyse est pire qu'une incompatibilité évidente car elle crée des dates futures plausibles mais incorrectes.

À retenir : comptez les champs avant de coller - et utilisez le générateur pour créer la version à cinq champs acceptée par crontab

Comptez d'abord les champs, identifiez ensuite le dialecte source et traduisez l'exigence (et non la ponctuation) en troisième. L'erreur de ToolAcre rend la première étape inévitable et sa description fournit une vérification côté cible après la reconstruction.

L'itinéraire génère uniquement des expressions à cinq champs. Il ne valide pas les secondes, les années ou les opérateurs spécifiques au planificateur, et ne planifie pas de tâche. Ces omissions définissent une frontière fiable qui devrait rester visible dans chaque débat sur la migration.