Linux 系统管理

作者:Mark F. Komarinski

正确设置您的时钟可能看起来并不困难。DOS 能够直接从 BIOS(基本输入/输出系统)设置其时间,您也可以直接从 DOS 设置 BIOS 时间。现在您需要担心时区、机器时间和软件时间之间的差异,以及当您的系统每天可能偏差 30 秒时,如何设置时间。

zoneinfo

很容易为您的系统设置正确的时间,如果您已联网,则很容易保持您的时间更新。首先,获取 zoneinfo 软件包的副本。对于像 Slackware 这样的发行版,它已经安装了(并且可能已经在 Slackware 1.2.0 及更高版本中设置)。查找 /usr/lib/zoneinfo 目录。如果您没有该目录,请获取软件包的副本(请参阅侧边栏“Finding zoneinfo”)并安装它。

为了获得最佳设置,您应该将 BIOS(或硬件)时钟设置为 GMT(或 Zulu,世界标准时间,或任何您想称呼它的名称)。将 BIOS 时钟设置为 GMT 的优势在于 Linux 将自动处理您所在地区的夏令时转换。如果您仍然使用 DOS,您可能不想这样做,但我发现 DOOM 不在乎我什么时候玩。我还发现,当您带入时间戳为凌晨 2:30 的文件时,办公室的人会认为您非常敬业。

您应该做的第一件事是启动进入 Linux 并进入 /usr/lib/zoneinfo 目录。您应该看到各种时区的列表。有些按国家/地区列出,有些有目录,其中包含更多列表(例如 US 目录)。找到适用于您国家/地区或时区的文件。对于我的系统,这将是 US/Eastern 文件,因为我位于美国的东部时区。如果您的国家/地区未列出,则有一系列文件与 GMT 的正负时间相关,例如 GMT-6。查明您与 GMT 相差多远,并使用该文件代替。

从这里,我创建一个从 /usr/lib/zoneinfo/localtime/usr/lib/zoneinfo/US/Eastern 的符号链接

ln -sf /usr/lib/zoneinfo/US/Eastern /usr/lib/
zoneinfo/localtime

另一个要链接的文件是 posixrules 文件。这可以链接到 localtime。如果您设置了 TZ 变量,则 posixrules 链接将用于设置正确的时区。

ln -s /usr/lib/zoneinfo/
localtime /usr/lib/
zoneinfo/posixrules
clock

如果您的 BIOS 时钟设置为 GMT,您必须使用 clock 命令告诉 Linux。最好的方法是编辑您的 /etc/rc.d/rc.local 文件(或者如果您没有 rc.d 目录,则编辑 /etc/rc.local 文件)并在文件中的任何位置添加以下命令

#Tell Linux the BIOS
is universal time!
clock -us

或者如果您的时钟设置为本地时间

#Tell Linux that the BIOS is set for local time
already!
clock -s

-s 选项表示设置时钟,-u 选项表示 BIOS 时钟设置为“世界标准时间”或 GMT。

从现在开始,当您使用 date 命令查看时间时,您将看到正确的本地时间以及您所在的时区

#date Thu Aug 10 22:15:35 EDT 1994

很容易为您的系统设置正确的时间,如果您已联网,则很容易保持您的时间更新。

netdate

如果您已联网到其他时间更准确的机器,您可以使用 netdate 命令定期保持您的机器时间正确。作为您机器上的 root 用户,只需输入命令

netdate [ -v ] [ -l limit ] <hostl> ... <hostn>

其中 hostl...hostn 是主机列表。通常最好列出物理上靠近您系统的主机,特别是如果您使用拨号 PPP 或 SLIP。

neLdate 的工作方式是将主机收集到组中,基于时间接近程度。在时间最接近本地时间的主机中,该组的第一个按字母顺序排列的主机用于设置本地主机上的时间。-v 选项将列出创建的组,-1 limit 选项改变了 netdate 等待来自其他主机的时间信息到达的时间量。限制为 0 将接受第一个响应的主机的时间并忽略所有其他主机。

但是,netGate 不会更新您的 BIOS 时钟,只会更新系统时钟。要更新 BIOS 时钟,请使用 clock -uw 命令“写入”世界标准时间,或者如果您将 BIOS 设置为本地时间,则使用 clock -w。您可能想尝试的一个想法是创建一个 shell 脚本,该脚本自动执行 netdate 和 clock 命令,并将其保存在您的 /etc 目录中。这样,如果您注意到时间有点偏差,您可以执行 shell 脚本来更新时间,并同时更新您的 BIOS 时钟。

如果您有兴趣对时区进行更多操作,请查看 dateclocknetdate 的 man 手册。此外,在 /usr/lib/zoneinfo 目录中有一个 time.doc 文本文件,它值得一读。

加载 Disqus 评论