我在设置服务器上的日期时遇到问题...
$ ls -la /etc | grep localtime
lrwxrwxrwx 1 root root 23 Mar 6 12:07 /etc/localtime -> /usr/share/zoneinfo/GMT
出于某种原因,尽管时间17:31:06是GMT,时区后缀是EST...
$ date
Tue Mar 6 17:31:06 EST 2012
硬件时钟也乱了——10:32:12不是 EST:
$ hwclock --show
Tue 06 Mar 2012 10:32:12 PM EST -0.000276 seconds
如果我将 hwclock 设置为系统时间或本地时间,它会设置错误:
$ hwclock --localtime
Tue 06 Mar 2012 10:34:22 PM EST -0.000190 seconds
$ date
Tue Mar 6 17:34:24 EST 2012
知道发生什么事了吗?
谢谢
答案1
处理时间问题时不至于发疯的三个简单规则:
首先:您正在运行Unix(并且可能是NTP):确保已将系统的 BIOS/硬件时钟设置为 UTC。
您最不希望看到的就是您的硬件 (BIOS) 时钟与 Unix 争夺谁的时区正确以及夏令时何时开始/结束。将硬件时钟设置为 UTC 可让生活变得轻松很多。
第二:当您更改系统范围的时区时,有时您需要注销并重新登录,以便系统了解发生了什么。通常我建议重新启动 - 这可确保操作系统的每个部分都已了解并了解发生了什么。
当您将机器的时区更改为夏威夷时,您不希望 cron 仍在美国/东部时间运行。
第三:如果您的用户帐户仍然对时区概念不明确,则可能是设置了TZ
环境变量——请仔细检查您的.profile
shell rc 文件。Unix
并不假设系统上的每个用户都处于本地时区,因此它允许您在每个用户(或每个 shell)级别上进行覆盖。如果您的系统运行在(例如)美国/东部时间,并且有用户从日本登录,这将非常有用 - 人们喜欢系统报告的时间与墙上的时钟相匹配 :)
答案2
问题在于将 hwclock 设置为系统时间,反之亦然(我对此进行了调整)实际上修改了 /usr/share/zoneinfo 中的时区文件。我不得不从另一台服务器复制新的 zoneinfo 文件。
因此,我只能说,不要尝试将系统时钟设置为硬件时钟或反之亦然(hwclock --hctosys
,hwclock --systohc
),除非您知道自己在做什么!