cron在Ubuntu 14.04上使用哪个时区?
我需要在格林威治时间21:02运行cronjob。我的crontab是: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.
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)