Outils de développement · Générateur Crontab
crontab(5) : ce que POSIX spécifie et qu'est-ce qu'une extension Vixie
· Contexte
cron Calendrier portabilité validation
Toutes les fonctionnalités cron ne sont pas standard. Cet article sépare ce que la spécification POSIX crontab exige des extensions (étapes, noms, surnoms) ajoutées par Vixie cron et supposées par la plupart des systèmes Linux.
Une expression ToolAcre valide peut toujours ne pas être prise en charge par un autre planificateur
Une planification qui passe ToolAcre a satisfait cet analyseur, pas toutes les implémentations de cron. La portabilité commence par cette modeste déclaration. La route accepte exactement cinq champs et une grammaire de jeton définie. Un appareil, un service ou un framework cible peut accepter moins, plus ou quelque chose de structurellement différent.
Conservez le résultat du navigateur comme élément de preuve : expression, description, avertissements et zone de prévisualisation. Avant le déploiement, comparez la documentation cible et exécutez un test inoffensif. La validation ne devient dangereuse que lorsqu'un signal vert local est promu en garantie de compatibilité universelle.
Le référentiel n'établit pas ce dont POSIX a besoin
Le classeur séparait les exigences POSIX des extensions, mais aucune spécification POSIX n'apparaît dans les sources du référentiel. Le comportement de ToolAcre ne peut pas prouver qui comporte des mandats standard. Cette section décrit donc la syntaxe implémentée sans l'attribuer à un organisme de normalisation.
Les plages numériques mises en œuvre sont 0–59 minutes, 0–23 heures, 1–31 jours du mois, 1–12 mois et 0–7 en semaine. Les caractères génériques, les valeurs uniques, les plages inclusives, les listes de virgules, les étapes génériques, les étapes de plage et une simple valeur de départ avec une étape sont tous analysés et testés.
Les noms, étapes, dimanche 7 et alias sont implémentés ici sans revendication d'historique des normes.
Les noms de mois de JAN à DEC et les noms de jours de semaine de SUN à SAT ne sont pas sensibles à la casse. Les noms peuvent apparaître seuls, dans des listes et dans des plages. Le jour de la semaine 7 est accepté comme dimanche et normalisé à 0. Ce sont des propriétés observables de `parseField`, quelle que soit la manière dont une autre implémentation les classe.
La table d'alias développe `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight` et `@hourly`. `@reboot` est délibérément refusé car il n'a pas de calendrier à prévisualiser. Les mots inconnus avec le signe arobase reçoivent une erreur nommant la liste prise en charge.
La prise en charge de l'affectation d'environnement est en dehors de cet analyseur
Les affectations d'environnement ne font pas partie de cette grammaire d'expression. La zone de saisie attend une planification et `parseCron` la divise en cinq morceaux après avoir résolu un alias pris en charge. Une ligne `KEY=value` ne peut pas être testée pour son expansion, son devis ou sa portabilité via cette route.
Cette omission empêche une fausse déclaration de normes. Un fichier crontab complet peut contenir des constructions qu'un outil d'expression uniquement ne voit jamais. Vérifiez-les séparément par rapport à la cible. Les erreurs de champ précises de ToolAcre ne doivent pas être transformées en jugements sur des lignes sans rapport dans un fichier plus volumineux.
Vérifiez la grammaire cible et utilisez un test de planification inoffensif
La vérification des cibles doit commencer par le nombre de champs et les opérateurs. Confirmez si les noms, dimanche 7, les barres obliques et les alias d'arobase sont acceptés. Ensuite, installez une action observable inoffensive à court terme, supprimez-la une fois les preuves capturées et comparez le résultat cible avec l'expression souhaitée.
Ne testez pas la portabilité avec une commande sensible ou en attendant une date annuelle rare. Choisissez la plus petite sonde sûre qui distingue le support grammatical. ToolAcre peut aider à construire ce calendrier et à l'expliquer, tandis que l'exécution cible établit la partie que le navigateur ne peut pas connaître.
Exemple concret : formulaire par étapes et liste explicite sous la grammaire de ToolAcre
Toutes les cinq minutes, ToolAcre accepte `*/5 * * * *`. Il accepte également la liste de minutes explicite `0,5,10,15,20,25,30,35,40,45,50,55 * * * *`. L'analyse étend les deux champs de minutes aux mêmes douze valeurs, de sorte que leurs candidats à la prochaine exécution correspondent sous le même instant de départ et la même zone.
La liste explicite peut servir de candidat de secours lorsqu'une cible ne dispose pas de syntaxe d'étape, mais ce référentiel ne peut pas certifier la prise en charge de la liste de cette cible. Comparez les deux formulaires dans ToolAcre pour l'équivalence sémantique, puis vérifiez quelle que soit la forme des documents de destination. L'équivalence ici n'est pas une preuve de portabilité là-bas.
La syntaxe à six champs est rejetée ; sa sémantique externe n'est pas documentée ici
Un sixième champ n'est pas accepté. L'erreur suggère qu'un style de secondes en tête appartient à Quartz ou à une entrée de type systemd, mais l'analyseur n'implémente pas ces grammaires. Il n'a pas de champ année et pas d'opérateurs `?`, `L`, `W` ou `#`.
Comptez les champs avant de tenter la traduction. Si une syntaxe non prise en charge a une signification de planification, une réécriture apparente à cinq champs peut entraîner une perte. Utilisez la documentation et les tests pour le planificateur source, puis exprimez uniquement les exigences représentables par la grammaire cible de ToolAcre. Tout le reste devrait rester une incompatibilité explicite.
À retenir : sachez quelles fonctionnalités sont des extensions et utilisez le générateur pour créer et vérifier les deux formulaires lorsque la portabilité est importante
La portabilité est une comparaison, pas une étiquette intégrée dans une expression. ToolAcre donne un côté bien testé : cinq positions, limites numériques, noms sélectionnés, plages composables/lists/steps et sept alias. Il donne également des refus clairs pour les formulaires mal formés ou étrangers.
Utilisez ce contrat pour raisonner avec précision, puis vérifiez l'autre côté. Une liste explicite et une étape peuvent être égales dans cet analyseur alors qu'une seule fonctionne ailleurs. Signaler la limite dialectale est plus exploitable que d'invoquer une norme dont l'article n'a pas réellement sourcé.