时间同步

新葡京娱乐场:|||近日,交通运输部颁布了《城市公共汽车和电车客运管理规定》(以下简称《规定》),自2017年5月1日起施行。

在 Arch Linux 中启用时间同步只需运行以下命令:

$ sudo timedatectl set-ntp true

这就足够了。

下面的内容可以不看。:)

xclock

使用以下命令安装 xclock:

$ sudo pacman -S xorg-xclock

然后运行以下命令:

$ xclock -d -update 1 -strftime %T &

就会在屏幕上显示每秒更新一次的数字时钟。

Network Time Protocol daemon

网络时间协议(Network Time Protocol)是 GNU/Linux 系统通过 Internet 时间服务器同步系统软件时钟的最常见方法。设计时考虑到了各种网络延迟,通过公共网络同步时,误差可以降低到 10 毫秒以内;通过本地网络同步时,误差可以降低到 1 毫秒。

在 Arch Linux 中,ntp 软件包实现了网络时间协议,如果不做任何配置,ntpd默认工作于客户端模式。也可以配置ntpd运行于服务器模式。可以通过以下命令查询是否已经安装了ntp软件包:

$ pacman -Ss "^ntp$"
extra/ntp 4.2.8.p3-1
    Network Time Protocol reference implementation

如果已经安装了ntp软件包,那么只需要使用以下命令就可以启用时间同步了:

$ sudo ntpd -u ntp:ntp

实际上在大多数情况下,我们并不需要提供 NTP 服务,所以不需要安装ntp软件包,而是使用下一节的方法实现时间同步。

systemd-timesyncd

systemd-timesyncd是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端。与 NTP 的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。除非你打算为客户端提供 NTP 服务器或者连接本地硬件时钟,否则这个简单的 NTP 客户端应该更适合大多数人。守护进程运行只需要尽可能小特权,并且会跟网络服务 networkd 挂钩,仅在网络连接可用时才工作。每次收到一个新的 NTP 同步请求时,后台服务就把当前时间保存到磁盘,并尽可能在系统启动时修正系统时间,这样处理的目的是为了适应像 Raspberry Pi 和嵌入式设备这种缺少 RTC 的系统,并确保这些系统时单点处理(即使它并不是总是正确的)。

可以通过以下命令启用时间同步:

$ sudo timedatectl set-ntp true

然后通过以下命令检查时间同步状态:

$ timedatectl

      Local time: 日 2015-10-18 08:56:18 CST  
  Universal time: 日 2015-10-18 00:56:18 UTC  
        RTC time: 日 2015-10-18 00:56:18  
       Time zone: Asia/Shanghai (CST, +0800)  
 Network time on: yes  
NTP synchronized: yes  
 RTC in local TZ: no

$ systemctl status systemd-timesyncd

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2015-10-18 07:44:43 CST; 1h 26min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 288 (systemd-timesyn)
   Status: "Synchronized to time server 202.112.29.82:123 (2.arch.pool.ntp.org)."
   CGroup: /system.slice/systemd-timesyncd.service
           └─288 /usr/lib/systemd/systemd-timesyncd

10月 18 07:44:43 m4250s systemd[1]: Starting Network Time Synchronization...
10月 18 07:44:43 m4250s systemd[1]: Started Network Time Synchronization.
10月 18 07:45:25 m4250s systemd-timesyncd[288]: Timed out waiting for reply ...).
10月 18 07:45:36 m4250s systemd-timesyncd[288]: Timed out waiting for reply ...).
10月 18 07:45:36 m4250s systemd-timesyncd[288]: Synchronized to time server ...).
Hint: Some lines were ellipsized, use -l to show in full.

参考资料

  1. ArchWiki: Time: Time synchronization
  2. ArchWiki: systemd-timesyncd
  3. ArchWiki: Network Time Protocol daemon