web-dev-qa-db-fra.com

Heure d'été et Cron

Si Cron a un travail planifié pour s'exécuter à 2 heures du matin et un à 3 heures du matin, comment ces travaux seraient-ils affectés par l'heure d'été?

Lorsque l'heure recule d'une heure, est-ce que l'heure passe directement de 2:59:59 à 2:00:00? Cela signifie que le travail à 2 heures du matin s'exécuterait deux fois et que le travail à 3 heures du matin s'exécuterait une fois? Ou est-ce que l'heure passe d'abord à 3 h 00, puis à 2 h 00, ce qui entraîne l'exécution des deux tâches deux fois?

Lorsque l'heure avance d'une heure, le temps passe-t-il de 1 h 59 min 59 s à 3 h 00 min amenant le travail de 2 heures à ne pas s'exécuter et le travail de 3 heures à s'exécuter une fois? Ou le temps passe-t-il de 2:00:00 à 3:00:00 am entraînant l'exécution simultanée des deux tâches?

En bref, ce que je me demande, c'est quand gagner une heure est-ce que l'heure de 3 heures se produit une ou deux fois et que perdre une heure est-ce que l'heure de 2 heures se produit du tout. Je n'ai rien trouvé à ce sujet lors de la recherche sur Google.

38
Joe W

La réponse dépendra de la variante/extension de cron que vous utilisez. Certaines variantes ne gèrent pas l'heure d'été, ce qui entraîne des travaux manquants et deux fois l'exécution du travail.

Si vous utilisez le cron Paul Vixie, il gère les modifications DST. Selon la page de manuel de cron :

cron vérifie chaque minute si le modtime de son répertoire spool (ou le modtime sur/etc/crontab) a changé

Et plus loin, en référence à l'heure d'été (le 2e paragraphe explique clairement votre réponse)

Heure d'été et autres changements d'heure

   Local time changes of less than three hours, such as  those  caused  by
   the  start or end of Daylight Saving Time, are handled specially.  This
   only applies to jobs that run at a specific time and jobs that are  run
   with  a    granularity  greater  than  one hour.  Jobs that run more fre-
   quently are scheduled normally.

   If time has moved forward, those jobs that would have run in the inter-
   val that has been skipped will be run immediately.  Conversely, if time
   has moved backward, care is taken to avoid running jobs twice.

   Time changes of more than 3 hours are considered to be  corrections  to
   the clock or timezone, and the new time is used immediately.

Ainsi, chaque fois que les décalages horaires peuvent être à 2:59:59 ou à 3:00:00, cron s'occupe des travaux en gérant la situation et en exécutant uniquement ceux manqués et évite d'exécuter les travaux déjà exécutés.

39
mtk