Français

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

Signes de pourcentage, guillemets et variables : pourquoi les lignes cron se brisent silencieusement Coquille

· Pourquoi c'est important

cron Calendrier coquille validation

Cinq zones de planification séparées des symboles de citation, de pourcentage et de variable
Illustration vectorielle originale de ToolAcre

Une ligne crontab n'est pas une ligne shell, et quelques caractères signifient autre chose ici. Cet article explique la règle du signe de pourcentage, les limites d'affectation des variables et les guillemets, afin que les commandes fassent ce qu'elles ont fait dans le terminal.

Un échec de nom de fichier après le cinquième champ ne peut pas être diagnostiqué par cet analyseur d'expression.

Si un nom de fichier de sauvegarde généré est vide, l'expression de synchronisation peut toujours être correcte. `0 3 * * *` sélectionne 03 :00 chaque jour ; les caractères après le cinquième champ n’entrent jamais dans l’analyseur de ToolAcre. Un échec côté commande ne doit pas être « corrigé » en modifiant la minute ou l’heure, à moins que l’aperçu lui-même ne contredise l’intention.

Séparez la ligne avant le diagnostic. Collez les cinq premiers champs dans le générateur, lisez la description et notez les heures à venir. Testez la commande restante avec l’implémentation et le shell réels de cron. Cette division empêche le débogage de la syntaxe du calendrier et de la syntaxe des commandes comme s’il s’agissait d’un seul langage.

La sémantique des commandes de signe en pourcentage n'est pas implémentée ni testée ici

Le classeur indiquait une transformation spéciale en signe de pourcentage. Aucun lexer correspondant n'existe dans `cron.js` ; son lecteur de champ accepte les chiffres, les noms pris en charge et la ponctuation utilisés par les plages, les listes et les étapes. L'interface utilisateur arrête également l'analyse après la zone d'expression. Il ne peut pas démontrer ce qui arrive aux pourcentages de caractères dans une commande déployée.

Étant donné que les implémentations cron et les analyseurs de fichiers complets peuvent différer, cet article n'universalise pas cette règle à partir d'un aperçu non vérifié. Consultez le manuel de la cible et reproduisez-le avec une contribution inoffensive. Une explication de la planification du navigateur ne constitue pas une preuve de la construction de stdin, de la conversion de nouvelle ligne ou de la gestion de la charge utile des commandes.

Les conseils d'évasion nécessitent des preuves spécifiques à la cible et sont omis

L'échappement de barre oblique inverse appartient également à la grammaire des commandes. ToolAcre ne peut pas dire si une couche consomme une barre oblique inverse avant une autre, et il n'invoque jamais de shell pour observer le résultat. La publication d’une ligne d’échappement prête à être copiée dépasserait donc la preuve source et pourrait être erronée pour une cible différente.

Déplacez la construction de commandes complexes dans un script testé séparément lorsque cela est approprié pour l'environnement, mais validez cette approche ici. Gardez l’expression stable pendant l’expérimentation. La seule affirmation défendable de ce référentiel est que cinq champs de timing peuvent être copiés indépendamment de la commande qui suit.

Les affectations de variables ne sont pas acceptées comme entrée d'expression

Une ligne `KEY=value` ne comporte pas cinq champs de planification et est rejetée par cet analyseur. Il n'y a pas de modèle d'affectation, de moteur d'expansion ou de table d'environnement dans l'outil. Le fait qu'une vraie crontab accepte les missions et comment elle interprète leurs valeurs doit être prouvé à partir de ce système.

Cette distinction protège les discussions sur la portabilité. ToolAcre acceptant `JAN` comme nom de mois ne dit rien sur `$HOME` dans une ligne de configuration. Les deux peuvent apparaître dans un seul fichier crontab, mais seule l'expression de calendrier appartient à la grammaire implémentée examinée pour ces articles.

Les cotations et la sélection de shells appartiennent au-delà des limites du générateur

Les guillemets sont des caractères ordinaires uniquement après la limite de planification, que ToolAcre ne franchit jamais. Sa règle des cinq champs exacts traite les jetons d'espacement supplémentaires comme une expression invalide plutôt que d'essayer de découvrir une commande citée. La ligne d'espace réservé copiée est une commodité de sortie, pas un validateur de ligne complète.

La sélection de shell est également absente. Il n'y a pas de `spawn`, `exec` ou d'interpréteur de commandes dans le chemin source. Testez le devis sous l'environnement exécutable qui le recevra réellement et évitez de prétendre que le générateur a approuvé une ligne simplement parce que le préfixe de synchronisation reste valide.

Limite travaillée : valider 0 3 * * * indépendamment d'une commande horodatée

Pour une exigence de sauvegarde horodatée, validez d'abord `0 3 * * *`. L'outil doit décrire 03:00 chaque jour et afficher les candidats dans la zone choisie. Conservez ce fragment vérifié. Créez ensuite un test côté commande inoffensif qui démontre le nom de fichier souhaité sous le planificateur cible.

Deux vérifications indépendantes produisent des preuves plus claires : une capture d'écran ou une assertion pour l'intention du calendrier, une autre sortie capturée pour la transformation des commandes. Si le nom du fichier est erroné mais que l'heure du candidat est correcte, le calendrier ne nécessite aucune modification. Si les deux sont faux, adressez-vous à chaque langue avec sa propre documentation.

Ce que cela ne couvre pas – l'environnement et les problèmes PATH abordés dans leur propre article

L'environnement et le comportement du chemin restent également en dehors du générateur, donc cet article ne redirige pas ces sujets vers une autre solution de contournement non prise en charge. Il indique plutôt la limite : l'itinéraire construit des expressions à cinq champs, des descriptions en langage clair, des avertissements et de futurs candidats à l'horloge murale.

Un déploiement cron complet nécessite plus de preuves que cela. Traitez les caractères spéciaux, les variables et la résolution des exécutables comme des problèmes côté hôte. Le refus du générateur de les analyser est utile car il empêche un outil de calendrier étroit de prétendre silencieusement comprendre la sémantique des commandes.

À retenir : connaissez les personnages que possède Cron - et gardez le calendrier correct avec le générateur pendant que vous corrigez la commande

Les lignes Cron peuvent contenir deux grammaires séparées par position. ToolAcre implémente uniquement la première grammaire, se terminant après le jour de la semaine. Les signes de pourcentage, les guillemets et les variables peuvent avoir de l'importance plus tard, mais ils ne peuvent pas changer ce que signifie `0 3 * * *` dans cet analyseur.

Gardez ces questions séparées dans les avis et les notes d'incident. Vérifiez l'intention de planification dans le navigateur, puis vérifiez le comportement des commandes sur la cible avec des données non sensibles. Cela produit des preuves plutôt que du folklore et évite de transformer une revendication de classeur en une garantie que le code n'a jamais faite.