安排cron作业在夏令时上运行

时间:2014-10-14 20:36:32

标签: cron dst

我需要运行一两个cron工作(如果还不够),以便每年节省一天的工作。该脚本应每年在以下时间执行。 1)3月的第二个星期日凌晨2点。 2)11月1日星期日凌晨2点。

我可以让它每个星期天都运行一次,有没有办法让它在这样的特定日子里运行?

3 个答案:

答案 0 :(得分:0)

不,crontab没有此语法。

您可以做的是安排一个作业在每个星期天运行,并使调用的命令成为一个脚本,如果它当前不在夏令时(而非“节省”)时间转换中,则会立即退出。

这假设有问题的系统将在转换期间启动并运行。如果出现电源故障,或者有人在周末关闭系统,您可能需要安排稍后运行错过的工作。 (anacron这样做,但我没有使用它。)

答案 1 :(得分:0)

当时间接近参考时间时,会发生夏令时转换。

3月份,它在1:59:59到3:00之间徘徊。本地时钟实际上从未击中过2:00。所以现在实际上不可能安排这个时间。你可以安排它提前一秒运行,但不是在实际时刻运行。

同样,在11月,时钟从1:59:59到1:00。到2点发生时,转换已经过了一个小时。但如果您安排在1:59:59,它将运行两次

以上(以及您的问题)假定北美DST规则。其他时区在不同的日期和时间过渡,或者根本不过渡。

另见the dst tag wiki

答案 2 :(得分:0)

在北美,DST的变化发生在3月的第2个星期日和11月的第1个星期日。以下cron条目将在这些特定日期运行:

这发生在3月2日星期日1:59

59 1 8-14 3 0 echo“设置DST前一分钟”

这发生在11月1日星期日凌晨1点59分

59 1 1-7 11 0 echo“清除DST前一分钟”