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

cron在Ubuntu 14.04上使用哪个时区?,ubuntu,cron,timezone,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中的时区定义 命令lsb_release-a表示: No LSB modules are available.

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

 CRON_TZ=GMT
 02 21 * * * thecommand
这在SuSE上运行良好,但在Ubuntu上不起作用。相反,它在20:02运行命令,即时区选择为GMT+1。为什么?

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

来自man 8 cron: 如果存在,守护进程将使用/etc/timezone中的时区定义

命令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\u 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)
TZ=$(
TZ=$(</etc/timezone) date +'%M %H' -d @$(date -ud '21:02' +%s)