gpt4 book ai didi

Cron 作业调度

转载 作者:行者123 更新时间:2023-12-04 02:25:22 27 4
gpt4 key购买 nike

我的 Web 服务器中有两个 Cron 作业 -

*/5     0-3     *   *   0-4     [my job]
*/5 19-23 * * 0-4 [my job]

我们在 GMT+6 时区,服务器在 GMT-8 时区。我们希望作业运行 -

周日至周五GMT+6 时区上午 9 点至下午 5 点(办公时间)每5分钟一次

但 cron 作业似乎在周五运行,并在 GMT+6 区的周日中午停止。

最佳答案

我不知道有什么简单的方法可以更改时区。一些旧版本的 cron 支持名为 CRON_TZ 的环境变量,但当前版本的 cron 似乎不支持。

因此您必须将时间转换为系统时间。

我认为您已经正确计算了时间和日期,但您必须将它们放在一起。例如,星期四下午 5 点(UTC+6)是星期四凌晨 3 点(UTC-8),但您的规则在星期四没有运行任何内容。

根据我的计算,你想要:

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 的替代方案并没有很多建议 alternative to cron?

关于Cron 作业调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5056031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com