我需要在格林尼治标准时间21:02运行cronjob。我的crontab是:

 CRON_TZ=GMT
 02 21 * * * thecommand

这在SuSE上很好用,但在Ubuntu上不起作用。而是在20:02运行命令,即将时区选择为GMT + 1。为什么?

服务器时区为MSK(现在为GMT + 3)。

从man 8 cron出发:
“守护程序将使用/etc/timezone中的时区定义(如果存在)”
 $cat /etc/timezone
 Europe/Moscow

命令lsb_release -a表示:
 No LSB modules are available.
 Distributor ID: Ubuntu
 Description:    Ubuntu 14.04.1 LTS
 Release:        14.04
 Codename:       trusty

最佳答案

在Ubuntu 14.04上运行的cron版本不支持CRON_TZ。如果在Ubuntu框上本地查看man 5 crontab,则会发现无法更改cron的时区以进行调度是一种限制:

因此:您必须找出cron正在使用的时区,并在crontab中使用它。如果您有生成crontab的脚本,则可以自动执行此操作。例如:

TZ=$(</etc/timezone) date +'%M %H' -d @$(date -ud '21:02' +%s)
在我的系统上,/etc/timezone包含America/New_York,因此上述命令将02 17输出为我应该在crontab条目的前两个字段中输入的内容,以便获得在21:02 UTC运行的作业。在您的系统上,该文件可能包含Europe/Moscow,因此该命令将改为输出02 00

关于ubuntu - cron在Ubuntu 14.04上使用哪个时区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28195736/

10-14 15:57
查看更多