Linux 系统管理
正确设置您的时钟可能看起来并不困难。DOS 能够直接从 BIOS(基本输入/输出系统)设置其时间,您也可以直接从 DOS 设置 BIOS 时间。现在您需要担心时区、机器时间和软件时间之间的差异,以及当您的系统每天可能偏差 30 秒时,如何设置时间。
很容易为您的系统设置正确的时间,如果您已联网,则很容易保持您的时间更新。首先,获取 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
如果您的 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 命令定期保持您的机器时间正确。作为您机器上的 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 时钟。
如果您有兴趣对时区进行更多操作,请查看 date、clock 和 netdate 的 man 手册。此外,在 /usr/lib/zoneinfo 目录中有一个 time.doc 文本文件,它值得一读。