哪个时区在Ubuntu 14.04上使用cron?

时间:2015-01-28 15:14:21

标签: ubuntu cron timezone

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

1 个答案:

答案 0 :(得分:3)

在Ubuntu 14.04上运行的cron版本不支持CRON_TZ。如果您在Ubuntu框中本地查看man 5 crontab,您将看到无法为调度目的更改cron的时区被称为限制:

  

限制

     

cron守护程序以定义的时区运行。它目前不支持每用户时区。所有任务:系统和      将根据配置的时区运行用户。即使用户在他的crontab中指定了TZ环境变量      只会影响crontab中执行的命令,而不会影响crontab任务本身的执行。

所以:你必须找出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