我需要运行一两个cron工作(如果还不够),以便每年节省一天的工作。该脚本应每年在以下时间执行。 1)3月的第二个星期日凌晨2点。 2)11月1日星期日凌晨2点。
我可以让它每个星期天都运行一次,有没有办法让它在这样的特定日子里运行?
答案 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规则。其他时区在不同的日期和时间过渡,或者根本不过渡。
答案 2 :(得分:0)
在北美,DST的变化发生在3月的第2个星期日和11月的第1个星期日。以下cron条目将在这些特定日期运行:
59 1 8-14 3 0 echo“设置DST前一分钟”
59 1 1-7 11 0 echo“清除DST前一分钟”