Ict-innovation/LPI/108.1
考生应能够正确维护系统时间并通过 NTP 同步时钟
关键知识领域
- 设置系统日期和时间。
- 将硬件时钟设置为 UTC 的正确时间。
- 配置正确的时区。
- 基本 NTP 配置。
- 了解使用 pool.ntp.org 服务
Linux 系统中存在两个独立的时钟。硬件时钟(在主板上)独立于操作系统运行,即使计算机关闭时也是如此。系统时间由 Linux 内核维护,并由计时器中断递增。Linux 启动时,它会从硬件时钟初始化系统时间。Linux 通常不会在运行时再次引用硬件时钟。
可以使用 hwclock 实用程序检查和修改硬件时钟。主要选项是
-r 或 --show 打印当前时间
-w 或 --systohc 将硬件时钟设置为当前系统时间
-s 或 --hctosys 将系统时间设置为当前硬件时钟时间
--set 将硬件时钟设置为指定的时间和日期
只有超级用户可以更改硬件时钟设置
例子
# hwclock --set --date="10/14/2010 16:55:05" # hwclock --show Thu 14 Oct 2010 04:55:09 PM BST -0.673528 seconds |
系统时间由内核维护,作为自 1970 年 1 月 1 日开始的秒数。这个时间点被称为“纪元”。
使用 date 命令显示系统时间
$ date Tue Sep 14 10:18:33 BST 2010 |
系统时间也可以使用 date 命令更改。只有超级用户可以执行此操作。语法是
date MMDDhhmmCCYY[.ss]
例子
# date 101216552010 Tue Oct 12 16:55:00 BST 2010 |
时区
计算机的硬件时钟通常设置为 UTC,无论计算机的地理位置如何。但是,date 命令报告(和设置)的时间通常是计算机的本地时区。时区定义了本地时间与 UTC 之间的偏移量。在某些 Linux 发行版中,时区在 /etc/timezone 文件中定义。
除了 UCT 时间,一些国家/地区还实施“夏令时”政策,每年在特定日期添加或删除一小时。这些政策由 /usr/share/zoneinfo/ 中的文件定义。这些是二进制文件。通过将适当的区域文件复制到 /etc/localtime,可以建立特定的区域政策。
例如,如果我们将 /usr/share/zoneinfo/Hongkong 复制到 /etc/localtime,那么下次我们运行 date 时,它将为我们提供香港的时间。这是因为 date 每次运行时都会读取 /etc/localtime。
使用 NTP
由于时钟频率中的微小误差,硬件时钟和系统时间都可能漂移。随着时间的推移,这些漂移可能会累积。计算机之间的时钟偏差可能会导致诸如 make 之类的工具出现问题,这些工具会检查文件的时间戳,以及使用时间戳来限制身份验证消息有效性的身份验证协议。
NTP(网络时间协议)是一种协议,可以将计算机的时钟与时间服务器同步,精度达到毫秒级。
直接更新(例如,通过原子钟)的计算机称为主时间服务器,用于更新更多数量的从属时间服务器。这形成类似于 DNS 结构的树结构。根服务器位于第一层或stratum,从属服务器位于第二层,依此类推。
配置客户端以查询 NTP 服务器:
一个名为 ntpd 的 NTP 守护程序用于定期查询一个或多个远程时间服务器。它调整内核时钟的速率,使其逐渐调整到正确的时间。避免突然变化,尤其是将时钟调回。守护程序非常易于配置。只需在 /etc/ntp.conf 中有一个或多个服务器条目指向公共或企业 NTP 服务器即可。可以在线在 http://support.ntp.org 找到公共 NTP 服务器列表
pool.ntp.org 上的时间服务器使用 DNS“循环”从自愿加入池的众多时间服务器池中随机选择一个。这对于许多最终用户来说已经足够了。使用池的简单 ntp.conf 文件可能如下所示
server 0.pool.ntp.orgserver 1.pool.ntp.org driftfile /var/lib/ntp/ntp.drift
NTP 协议还可以根据一系列查询来估计硬件时钟的频率误差;此估计值将写入由 driftfile 标签引用的文件。
ntpd 启动后,它本身将成为一个 NTP 服务器,在端口 123 上提供使用 UDP 的服务。
一次性调整:
ntp 包还提供 ntpdate 工具,可用于从命令行设置时间。-q 选项只是查询服务器,没有 -q,命令将设置系统时间。
例子
$ ntpdate -q ntp.ubuntu.com server 91.189.94.4, stratum 2, offset 0.009249, delay 0.05046 14 Sep 11:25:23 ntpdate[9493]: adjust time server 91.189.94.4 offset 0.009249 |
以下是使用过的文件、术语和实用程序的部分列表:* /usr/share/zoneinfo
- /etc/timezone
- /etc/localtime
- /etc/ntp.conf
- date
- hwclock
- ntpd
- ntpdate
- pool.ntp.org