Cron作业调度
我的web服务器中有两个Cron作业-Cron作业调度,cron,Cron,我的web服务器中有两个Cron作业- */5 0-3 * * 0-4 [my job] */5 19-23 * * 0-4 [my job] 我们在GMT+6时区,服务器在GMT-8时区。我们希望作业能够运行- 星期日至星期五 格林尼治标准时间+6时区(办公时间)上午9时至下午5时 每5分钟一次 但cron作业似乎在周五运行,也在周日中午GMT+6时区停止。我不知道有什么简单的方法可以更改时区。一些较旧版本的cron支持名为cron
*/5 0-3 * * 0-4 [my job]
*/5 19-23 * * 0-4 [my job]
我们在GMT+6时区,服务器在GMT-8时区。我们希望作业能够运行-
星期日至星期五
格林尼治标准时间+6时区(办公时间)上午9时至下午5时
每5分钟一次
但cron作业似乎在周五运行,也在周日中午GMT+6时区停止。我不知道有什么简单的方法可以更改时区。一些较旧版本的
cron
支持名为cron_TZ
的环境变量,但当前版本的cron
似乎不支持
所以你必须把时间转换成系统时间
我认为你正确地计算了时间,正确地计算了天数,但你必须把它们加在一起。例如,UTC+6的周四下午5点是UTC-8的周四凌晨3点,但您的规则在周四没有运行任何内容
根据我的计算,你想要:
Sunday 0900-1700 UTC+6 = Saturday 1900-2400 and Sunday 0000-0300 UTC-8
Monday 0900-1700 UTC+6 = Sunday 1900-2400 and Monday 0000-0300 UTC-8
...
Thursday 0900-1700 UTC+6 = Wednesday 1900-2400 and Thursday 0000-0300 UTC-8
Friday 0900-1700 UTC+6 = Thursday 1900-2400 and Friday 0000-0300 UTC-8
您可以在crontab
中表示为:
*/5 19-23 * * 0 [my job]
*/5 0-3,19-23 * * 1-4 [my job]
*/5 0-3 * * 5 [my job]
然而,这个解决方案感觉不太好
当夏时制改变时会发生什么?您是否需要更新crontab
如果您有root
访问权限,您可以修改/etc/init.d/cron
条目,并将TZ=America/Los_Angeles
或类似内容放在那里
当然,这个解决方案听起来也很糟糕,尤其是当其他人使用这个系统时。如果你这样做的话,不妨改变系统的时区
不幸的是,对于cron的替代方案没有太多的建议
这篇文章帮助了我
请将所有代码和输出缩进四个空格,以便所有内容的格式正确。这次我已经为您修复了它。一些版本的cron支持一个名为
cron_TZ
的变量。也许这会有帮助。这对我有帮助:我会自己做算术,只使用服务器的时间透视图。你也可以更改服务器的时区:谢谢你的回答。这很有帮助。但我认为第一行应该是*/5 19-23**6[我的工作]——因为我应该在周六晚上开始。