我需要在格林尼治标准时间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/