夏令时和Cron

夏令时和Cron,cron,dst,Cron,Dst,如果Cron有一个作业计划在凌晨2点运行,一个在凌晨3点运行,那么这些作业会受到夏令时的影响吗 当时间倒转一小时时,时间是否从凌晨2:59:59直接到凌晨2:00:00?这意味着凌晨2点的作业将运行两次,而凌晨3点的作业将运行一次?还是时间先变为凌晨3:00:00,然后变为凌晨2:00,导致两个作业都运行两次 当时间向前移动一小时时,时间是否从凌晨1:59:59变为凌晨3:00:00,导致凌晨2点作业不运行,凌晨3点作业运行一次?或者时间从凌晨2:00:00转移到凌晨3:00:00,导致两个作业

如果Cron有一个作业计划在凌晨2点运行,一个在凌晨3点运行,那么这些作业会受到夏令时的影响吗

当时间倒转一小时时,时间是否从凌晨2:59:59直接到凌晨2:00:00?这意味着凌晨2点的作业将运行两次,而凌晨3点的作业将运行一次?还是时间先变为凌晨3:00:00,然后变为凌晨2:00,导致两个作业都运行两次

当时间向前移动一小时时,时间是否从凌晨1:59:59变为凌晨3:00:00,导致凌晨2点作业不运行,凌晨3点作业运行一次?或者时间从凌晨2:00:00转移到凌晨3:00:00,导致两个作业运行一次


简言之,我想知道的是,当增加一个小时时,凌晨3点会发生一次或两次,而失去一个小时时,凌晨2点会发生吗。我在谷歌上找不到任何相关信息。

答案取决于您使用的cron的变体/扩展。某些变体不处理夏令时,导致作业丢失和两次运行作业

如果您使用的是Paul Vixie cron,那么它会处理DST更改。根据:

cron每分钟检查一次它的假脱机目录 modtime(或/etc/crontab上的modtime)已更改

此外,关于夏令时(第二段清楚地解释了您的答案)

夏令时和其他时间更改

   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处理作业的方式都是处理情况,只运行错过的作业,避免运行已经运行的作业。

说得清楚一点,这取决于您的居住地、cron作业的调度方式(需要处理的Unix cron)java调度器可以自己处理

在美国,时钟在当地时间凌晨2点变化。在春天,时钟从凌晨1:59跳到凌晨3:00。;秋天,时钟从凌晨1:59倒回到凌晨1:00

在欧盟,时钟在世界时间凌晨1点变化。春天,时钟从上午12:59跳到凌晨2:00。;秋天,时钟从凌晨1:59倒回到凌晨1:00


示例:如果您在今天2020年10月25日凌晨1:30有一个Unix cron作业,您的作业将运行两次

链接断开。保罗·维克西·克罗恩。我在互联网上找不到任何东西。这是一个指向不存在页面的存档的链接:这是一个当前的网站,它承载着linux手册页:从我的问题中应该可以清楚地看出我所说的时间更改,因为我指定了更改前后的小时数。这也不同于公认的答案。