Outils de développement · Générateur Crontab
Pourquoi cron n'a pas de champ de fuseau horaire : heure locale, CRON_TZ et conteneurs en UTC
· Contexte
cron Calendrier fuseaux horaires planification
Une expression cron n'a pas de fuseau horaire, donc les cinq mêmes champs signifient des moments différents sur différents hôtes. Cet article explique quelle horloge cron utilise, l'extension CRON_TZ et pourquoi les conteneurs changent la réponse.
Les mêmes champs produisent des instants d'aperçu différents lorsque la zone sélectionnée change
`0 9 * * *` contient une heure mais aucun emplacement. Dans ToolAcre, choisir UTC ou Asia/Tokyo laisse les cinq champs inchangés tout en modifiant l'instant représenté par chaque candidat d'horloge murale 09:00. Un rapport peut donc apparaître à des heures d'intervalle lorsque deux environnements interprètent les mêmes étiquettes locales dans des zones différentes.
Le panneau rend cette dépendance explicite avec un sélecteur « Afficher les prochaines exécutions dans ». Utilisez la zone de la machine prévue lors de la révision du planning, puis enregistrez cette hypothèse à côté de l'expression. La sélection affecte uniquement l'aperçu du navigateur ; il n'est pas intégré dans le texte cron copié.
L'expression ne contient aucune zone ; la sélection de l'horloge du démon externe n'est pas configurée ici
Il existe exactement cinq spécifications de champ, dont aucune n'est nommée fuseau horaire. `nextRuns` accepte la zone comme option distincte et utilise par défaut l'environnement hôte vu par JavaScript. Cette séparation prouve que le contexte de zone est externe à l'expression dans le modèle de ToolAcre.
Le classeur a indiqué quelle horloge lit chaque démon. Ce référentiel ne peut pas configurer ou inspecter un démon, il n'établit donc pas ce comportement universel. Il ne peut que conseiller de faire correspondre la zone de prévisualisation à l’interprétation documentée de la cible et de vérifier indépendamment le planificateur installé. La prise en charge de
CRON_TZ est en dehors de cet analyseur et n'est pas revendiquée
`CRON_TZ` n'est pas analysé. Sa saisie dans la zone d'expression échoue car il ne s'agit pas de cinq champs et aucun contrôle par champ ne stocke de directive. L’affirmation du classeur selon laquelle une implémentation la prend en charge tandis que d’autres ne le font pas nécessite des sources non présentes ici.
Si une cible documente une directive de fuseau horaire, configurez-la et testez-la ici. Ne vous attendez pas à ce que ToolAcre conserve la directive lors de la copie d'une expression. Conservez les métadonnées de zone adjacentes à la planification jusqu'à ce que la configuration spécifique à la cible soit examinée et déployée.
La sémantique de l'environnement TZ n'est pas modélisée
Une mission `TZ` est également hors de portée. Le navigateur utilise une option `timeZone` explicite pour le formatage et la conversion, et non une ligne d'environnement dans un fichier crontab. Il ne peut pas dire si une affectation modifie l'évaluation du calendrier, la sortie de la commande ou ni l'un ni l'autre sur un autre système.
Cette correction évite une hypothèse subtile mais coûteuse. Des noms similaires n’impliquent pas des rôles identiques. Traitez la sélection de la zone du planificateur et l'environnement du processus comme des questions distinctes, et répondez aux deux à partir de l'implémentation cible plutôt qu'à partir d'un générateur d'expression.
Les valeurs par défaut des conteneurs et du cloud nécessitent des preuves de cible
Les conteneurs et les images de nuages ne sont pas inspectés par l'itinéraire. Aucun socket Docker, horloge hôte ou service de métadonnées n’est interrogé. Les affirmations selon lesquelles ils sont par défaut UTC peuvent être vraies dans un déploiement particulier, mais ne peuvent pas être généralisées à partir de `Intl.DateTimeFormat` exécuté dans le navigateur d'un lecteur.
Capturez la zone cible réelle grâce à ses outils et sa configuration documentés. Sélectionnez ensuite le même nom IANA dans ToolAcre lorsqu'il est disponible. Une liste de zones de navigateur reflète ce que sait son moteur ; cela ne prouve pas que la cible contient des données ou des paramètres de zone identiques.
Exemple concret : prévisualiser 09:00 dans deux zones sélectionnées sans conversion saisonnière codée en dur
Gardez `0 9 * * *` fixe et prévisualisez un résultat en UTC, puis en Amérique/New_York. Chaque liste affiche 09:00 comme heure du mur, mais les instants d'époque diffèrent par le décalage de zone applicable. Évitez de publier une conversion d'heure permanente, car les décalages régionaux peuvent changer selon les dates.
Les tests démontrent ce principe avec les minuits UTC et Tokyo et avec un travail quotidien à Londres lors d'un changement en avant. Utilisez les candidats en direct pour les dates en cours de révision. Si le déploiement convertit le planning en une heure UTC fixe, documentez la limitation saisonnière plutôt que d'impliquer qu'une valeur préserve 09:00 local pour toujours.
La gestion des candidats DST est un comportement d'aperçu de ToolAcre, pas une garantie de démon
ToolAcre crée des candidats en tant que composants de calendrier local et les convertit via les données de la zone du navigateur. Une heure d'avance inexistante est omise et une heure quotidienne ordinaire reste la même heure locale tout au long d'une transition testée. Ce sont des faits d’implémentation en avant-première.
Il ne s'agit pas de garanties d'exécution pour un démon ou un planificateur cloud. Vérifiez la politique de transition dans laquelle le travail sera exécuté. L'aperçu peut révéler un risque et fournir les instants attendus, tandis que le planificateur déployé fournit une observation faisant autorité indiquant si une action démarre.
À retenir : un planning n'est complet qu'avec sa zone – créez les champs dans le générateur, puis enregistrez le fuseau horaire à côté d'eux
Une planification est opérationnellement incomplète sans contexte de zone même si ses cinq champs sont syntaxiquement complets. ToolAcre représente cette vérité en conservant la zone dans un sélecteur séparé et en affichant la liste d'horloges murales résultante. L'expression copiée à elle seule ne peut pas porter le choix.
Enregistrez l'expression et la zone ensemble, vérifiez la configuration cible et revisitez les candidats à proximité des changements de décalage. Le générateur crée et explique les horaires ; il ne définit pas l'horloge du serveur, n'écrit pas de directives de fuseau horaire et ne promet pas l'exécution. Cette limite permet de conserver l'aperçu utile sans surestimer le contrôle.