![当我的服务器处于不同的时区时,以 UTC 运行 cron 作业](https://linux22.com/image/775308/%E5%BD%93%E6%88%91%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%84%E4%BA%8E%E4%B8%8D%E5%90%8C%E7%9A%84%E6%97%B6%E5%8C%BA%E6%97%B6%EF%BC%8C%E4%BB%A5%20UTC%20%E8%BF%90%E8%A1%8C%20cron%20%E4%BD%9C%E4%B8%9A.png)
我的服务器在 GMT 时区运行,这意味着它在夏季会切换到英国夏令时。
我希望 cron 作业以 UTC 运行,因为它访问在该时区运行的外部服务。
例如,在冬季,我的工作应该在服务器时间为凌晨 1 点(GMT = UTC)时运行,而在夏季,我的工作应该在凌晨 2 点(GMT 比 UTC 早一小时)时运行。
我不想将服务器更改为使用 UTC 作为其时区,因为其他作业是根据当地时间运行的。注意:我在凌晨 1 点运行的作业本身不会访问时间信息,因此不需要知道它在哪个时区运行。它只需要在 UTC 时间运行。
答案1
最简单的方法是使用包装器脚本来检查本地时间,然后适当地执行实际作业。核心条目是包装器脚本,您需要在时间段内每小时运行一次以解决差异问题。