如果有那么一天:
https://secure.wikimedia.org/wikipedia/en/wiki/Daylight_saving_time
当我们必须这样做时,例如:将时钟从凌晨 3 点调回至凌晨 2 点。好的。
因此,如果有人在凌晨 3 点创建了一个 cron 作业,那么如果是夏令时,备份将首先在凌晨 3 点运行,然后时钟自动调回凌晨 2 点,1 小时后,备份再次运行,因为现在是凌晨 3 点![假设,如果备份每天运行两次,则可能会出现问题。甚至更糟:不会运行任何备份,因为例如:计划在凌晨 2 点运行,但时钟永远不会到达凌晨 2 点,因为它会自动设置为凌晨 3 点!当我们必须将时钟向前调时]。
那么真正的问题是:世界各地的夏令时是否相同,还是时间不同?我们是否应该注意这个“理论上”的问题?
答案1
我不知道 Cron 是如何做到的,但这是微软的解决问题使用任务计划程序。
春天来临
对于在 SF 转换导致的时间空白期间安排的任务,调度程序可能会采取多种可能的方式:
方法 1:由于这些分钟不在该时区的当天,因此调度程序可能会忽略计划在这些分钟内发生的任何任务。此行为可能适合某些应用程序;调度程序不会阻止将这些时间放入计划中。
方法 2:在没有 DST 的情况下,按照实际开始时间启动这些任务。例如,计划在当天早上 2:05 发生的任务实际上将在 DST 3:05 运行。此方法对于必须交错和按顺序执行的任务可能很有用。但是,此方法可能会导致一个任务在依赖于第一个任务的另一个任务之后运行。例如,如果一个任务计划在 2:30 运行,而后续任务计划在 3:15 运行,则 3:15 的任务可能首先运行,然后是 2:30 的任务,后者现在将在 3:30 运行。
方法 3:压缩时间,然后按照过渡后某个时间安排的顺序运行任何错过的任务。此行为可使任务保持有序。但是,如果在 SF 时间空白期间安排了多个任务,它们似乎几乎同时开始。任何需要特定时间和顺序的相互依赖关系都可能导致任务中的步骤失败。这似乎是最新的 Microsoft 调度程序使用的方法。
倒退
以下是当时间重复时,调度程序对 FB 期间安排的任务可能采取的几种行为方式:
方法 1:由于时间会重复,因此每次到达预定时间时都会重新执行任务。这似乎不是一个常见的要求;但是,这种行为可能适合某些应用程序。
方法 2:在没有 DST 的情况下,按照实际开始时间启动这些任务。例如,计划在当天凌晨 2:05 运行的任务将在标准时间 1:05 运行,即第二个 1:05 挂钟时间。
方法 3:在计划的挂钟时间启动任务。此行为会将计划在该日期 2:00 DST 启动的所有任务延迟一小时,但该时间之后的所有任务都会按顺序发生,并且按照您想要的实际时间间隔发生。最新的 Microsoft 调度程序似乎使用此方法。但是,计划在过渡时刻准确发生的任务可能会在该时刻运行。例如,计划在凌晨 2:00 发生的任务可能会在标准时间凌晨 1:00 运行(如方法 2 中所示)。
答案2
使用 UTC 应该不会有问题。对于 CRON,您显然可以这样做:
/etc/default/rcS UTC=yes