Crond gère-t-il le changement d'heure d'été +1 heure?


16

Le week-end dernier, nous avons dû changer l'heure de 02h00 à 03h00.

Question: Que se passerait-il s'il y avait un cronjob à 02:30?

crond est une très ancienne solution de planification, elle devrait probablement la gérer, mais je ne sais pas comment.

Réponses:


18

Cela dépend probablement de votre implémentation cron, mais le populaire cron Vixie déclare dans le manuel:

cron se réveille ensuite toutes les minutes, examinant toutes les crontabs stockées, vérifiant chaque commande pour voir si elle doit être exécutée dans la minute en cours.

et

Des considérations particulières existent lorsque l'horloge est modifiée de moins de 3 heures, par exemple au début et à la fin de l'heure d'été. Si le temps a avancé, les travaux qui auraient été exécutés dans le temps ignoré seront exécutés peu de temps après la modification. Inversement, si le temps a reculé de moins de 3 heures, les travaux qui tombent dans le temps répété ne seront pas réexécutés.

Seuls les travaux qui s'exécutent à un moment particulier (non spécifié comme @hourly, ni avec '*' dans le spécificateur d'heure ou de minute) sont affectés. Les travaux spécifiés avec des caractères génériques sont exécutés immédiatement en fonction de la nouvelle heure.

Le changement d'heure d'été étant inférieur à 3 heures, votre programme s'exécuterait peu après 3h00.

Je ne sais pas si c'est un comportement spécifique à Vixie cron, je semble me rappeler que c'est ainsi que mon PDP-11 fonctionnait aussi bien dans les années 80, mais je ne suis pas sûr.


2
Wow, connaissances des années 80 - Chapeau bas!
Isaac

règle générale: une fois par an, vos crons dans cette plage horaire ne fonctionneront pas. une fois par an, vos crons s'exécuteront deux fois. corollaire: ce n'est pas toujours vrai. liés: arrêtez d'utiliser les fuseaux horaires locaux!
tedder42

@ tedder42 veuillez fournir des références, vos affirmations contredisent à la fois la documentation et le comportement réel de cron.
Anthon


Ce cas anecdotique fait référence à 2h et 3h du matin et n'a aucun rapport avec la question (qui fait référence à 14h30) pm. Vos références peuvent être un comportement (ancien) intéressant, cela ne correspond pas à mon expérience. Et exécuter un serveur sans fuseau horaire a ses propres problèmes.
Anthon

2

La meilleure solution est de faire fonctionner votre ordinateur avec l'horloge matérielle réglée sur UTC, (temps universel coordonné), AKA GMT ou heure zoulou et de modifier uniquement la façon dont l'heure est affichée en définissant le fuseau horaire local pour permettre l'heure d'été. le temps de prendre le relais.

Sur SUSE Linux, et probablement la plupart des autres, si le système d' horloge matérielle -> Environnement -> Horloge -> HWCLOCK est défini sur UTC avec l'indicateur -u alors et votre fuseau horaire est défini sur l'endroit où vous vous trouvez, le système affichera automatiquement les heures locales avec des corrections DST pour vous.

Cela présente un certain nombre d'avantages:

  • Vous n'aurez plus jamais à régler manuellement l'horloge pour les changements d'heure d'été
  • Les onglets CRON seront stockés et exécutés aux heures UTC
  • Si un fichier, par exemple un journal, est écrit à 01h30 avant la fin de l'heure d'été et un autre à 01h20 après la fin de l'heure d'été, ce fichier sera toujours "plus récent" que l'autre car les horodatages du fichier seront UTC et vient d'être traduit pour l'affichage en fonction du fuseau horaire actuel à l'heure d'affichage.

Pour plus d'informations, tapez man hwclockdans un terminal.


2
Une piqûre mineure. L'UTC n'est pas la "constante de temps universelle". UTC signifie temps universel coordonné
fpmurphy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.