为什么当 /etc/localtime 符号链接到 /usr/share/zoneinfo/GMT 时,$ date 仍显示 EST?

为什么当 /etc/localtime 符号链接到 /usr/share/zoneinfo/GMT 时,$ date 仍显示 EST?

我在设置服务器上的日期时遇到问题...

$ 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环境变量——请仔细检查您的.profileshell rc 文件。Unix
并不假设系统上的每个用户都处于本地时区,因此它允许您在每个用户(或每个 shell)级别上进行覆盖。如果您的系统运行在(例如)美国/东部时间,并且有用户从日本登录,这将非常有用 - 人们喜欢系统报告的时间与墙上的时钟相匹配 :)

答案2

问题在于将 hwclock 设置为系统时间,反之亦然(我对此进行了调整)实际上修改了 /usr/share/zoneinfo 中的时区文件。我不得不从另一台服务器复制新的 zoneinfo 文件。

因此,我只能说,不要尝试将系统时钟设置为硬件时钟或反之亦然(hwclock --hctosyshwclock --systohc),除非您知道自己在做什么!

相关内容