Mar*_*oma 7 cron timezone localtime
假设我有一个CRON工作
30 2 * * * ....
Run Code Online (Sandbox Code Playgroud)
然后每当晚上2:30(当地时间)时这将运行.
现在假设我有时区Europe/Germany,它是2017-10-29(DST切换的那一天).然后这个CRON工作会运行两次,对吗?
假设我有时区Europe/Germany和CRON工作
30 11 * * * ....
Run Code Online (Sandbox Code Playgroud)
由于德国从未在11:30进行过DST更改,因此不会产生干扰.但是用户可以改变当地时间.要非常明确:这个问题与DST无关.
对于以下测试用例,我想知道CRON作业是否/多久安排一次:
他们归结为CRON触发的速度有多快?第四个也有问题,如果CRON存储它已经执行了那一分钟.
同一问题的另一个变体:
自信地回答这个问题的最简单方法是查看cron守护程序的源代码。有几个版本,网上像这样,也可以使用apt-get的源的cron。
cron的滴答周期是重复睡眠一分钟,如果有工作要做,则该循环会更少。从睡眠中恢复后,立即检查时间并将结果视为以下wakeupKind值之一:
如有疑问,消息来源将清楚地注释这些wakeupKind值。
编辑
为了跟踪是否sleep()可能受时钟变化的影响,似乎在几个Linux手册页中间接存在答案。
nanosleep()CLOCK_MONOTONIC时钟来测量时间(即使POSIX.1认为不应该)CLOCK_MONOTONIC,该说明不受系统时间跳跃的影响,但会受到NTP样式的增量时钟同步调整的影响。因此,总而言之,系统管理员样式的时钟更改不会对产生影响sleep()。但是例如,如果进行了NTP调整并说“稍微”提前了时钟,则cron会经历一系列稍微短的sleep()函数调用。