Подтвердить что ты не робот

Летнее время и Крон

Если у Cron запланировано выполнение задания в 2 часа ночи и один в 3 часа ночи, как повлияет на эти задания на летнее время?

Когда время сдвигается назад на час, время идет от 2:59:59 до 2:00:00 непосредственно? Это означает, что работа 2 часа будет выполняться дважды, а работа 3 часа будет выполняться один раз? Или происходит ли первое изменение времени до 3:00:00 и затем 2:00:00, в результате чего оба задания выполняются дважды?

Когда время сдвигается вперед на час, время идет от 1:59:59 до 3:00:00, а 2 часа работы не запускаются, а 3 часа работы запускаются один раз? Или время меняется с 2:00 до 3:00:00, заставляя одновременно выполнять задания?

Короче говоря, мне интересно, когда набирает час, 3 часа ночи случаются раз или два, и, теряя час, происходит 2 часа ночи. Я не смог найти ничего об этом, глядя в Google.

4b9b3361

Ответ 1

Ответ будет зависеть от варианта/расширения cron, который вы используете. В некоторых вариантах не выполняется переход на летнее время, что приводит к отсутствию заданий и удвоению пробега задания.

Если вы используете cron Paul Vixie, то он выполняет изменения DST. В соответствии с cron man page:

cron проверяет каждую минуту, чтобы узнать, modtime (или modtime на /etc/crontab ) изменилось

И далее, применительно к летнему времени (второй пара ясно объясняет ваш ответ)

Летнее время и другие изменения времени

   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.

Итак, всякий раз, когда сдвиг во времени может быть 2:59:59 или в 3:00:00, cron, выполняющий работу, запускается, обрабатывая ситуацию и запуская только пропущенные и избегая запуска уже запущенных заданий.