【debian下crontab】debian下cron执行时间的时区问题

更新时间:2019-05-04    来源:Ubuntu    手机版     字体:

【www.bbyears.com--Ubuntu】


我购买的VPS默认安装的时区是莫斯科(东四区?),看看几个命令的执行效果:

root@blogguy_cn:~# date
Wed Jan  8 20:16:23 MSK 2014
root@blogguy_cn:~# date -u
Wed Jan  8 16:16:26 UTC 2014
root@blogguy_cn:~# date -R
Wed, 08 Jan 2014 20:18:39 +0400

看到了吧!时区为MSK,比格林威治时间晚4个小时。这不是主要问题,我们常常遇到的。问题是下面的问题:

我要执行下面的crontab:

0 0 * * * root /var/www/cron_book.sh >>/var/www/crontab_book.log 2 >&1

猜猜看,这个任务会在几点执行?

我的本意是要在午夜12点执行,结果呢?看看日志:

2014-01-08 04:00:08 start

有点混乱了。我尝试更改时间为UTC,没有效果。

于是只能把时区更改为与UTC统一的伦敦时区/etc/localtime文件

ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime

同样秀修改/etc/timezone文件,原始文件为:

Etc/UTC
Europe/Moscow

修改为:

Etc/UTC
Europe/London

然后再运行:

root@111cn.net:~# date
Wed Jan  8 16:25:24 GMT 2014
root@111cn.net:~# date -u
Wed Jan  8 16:25:28 UTC 2014
root@111cn.net:~# date -R
Wed, 08 Jan 2014 16:25:37 +0000

总结原因:

在Linux 系统里面,系统时间由硬件时间、UTC(/etc/default/rcS)、Timezone三个因素决定。其中/etc/default/rcS里面的UTC选项告诉Linux系统这个硬件时间是否UTC时间,Timezone是设定系统所处UTC时区(我们通常设为Asia/Shanghai)。系统启动时候读出硬件时间,再根据是否UTC时间、系统所处Timezone计算出系统Localtime。Debian默认把BIOS时间认为是世界时间(UTC),所以就造成系统时间比实际快8小时。

本文来源:http://www.bbyears.com/caozuoxitong/49913.html