在 Linux 中,系统时区由符号链接确定/etc/localtime. 此链接指向描述本地时区的时间 zone 数据文件。时间 zone 数据文件位于以下位置之一/usr/lib/zoneinfo或/usr/share/zoneinfo取决于您使用的 Linux 发行版。
例如,在位于新泽西州的 SuSE 系统上,/etc/localtime链接将指向/usr/share/zoneinfo/US/Eastern. 在 Debian 系统上,/etc/localtime链接将指向/usr/lib/zoneinfo/US/Eastern.
如果您找不到zoneinfo目录,在/usr/lib或/usr/share目录中,请执行 find /usr -print | grep zoneinfo 或查阅您的发行版文档。
当用户位于不同的时区时会发生什么? 用户可以通过设置 TZ 环境变量来更改其私有时区。 如果未设置,则假定为系统时区。 TZ 变量的语法在tzset手册页中描述。
date 命令显示当前日期和时间。 例如
$ date Sun Jul 14 21:53:41 EET DST 1996 $ |
$ date -u Sun Jul 14 18:53:42 UTC 1996 $ |
# date 07142157 Sun Jul 14 21:57:00 EET DST 1996 # date Sun Jul 14 21:57:02 EET DST 1996 # |
请注意 time 命令。 这不是用于获取系统时间的。 而是用于计时某事需要多长时间。 请参阅 time 手册页。
date 仅显示或设置软件时钟。clock 命令同步硬件时钟和软件时钟。 它在系统启动时使用,以读取硬件时钟并设置软件时钟。 如果您需要同时设置两个时钟,则首先使用 date 设置软件时钟,然后使用 clock -w 设置硬件时钟。
的-uclock 的选项告诉它硬件时钟是世界标准时间。 您必须正确使用-u选项。 如果您不这样做,您的计算机将对时间感到非常困惑。
应谨慎更改时钟。 Unix 系统的许多部分都要求时钟正常工作。 例如,cron 守护程序定期运行命令。 如果您更改时钟,它可能会对是否需要运行命令感到困惑。 在早期的 Unix 系统上,有人将时钟设置为未来二十年,而 cron 想要一次运行所有二十年的定期命令。 当前版本的 cron 可以正确处理此问题,但您仍然应该小心。 大幅跳跃或向后跳跃比小幅或向前跳跃更危险。