目录
无论是 Linux 服务器还是嵌入式设备,只要有网络连接需求,都需要保持时间同步。对许多应用场景来说,时间的准确性都至关重要,例如数据采集上报、订单信息提交、即时通讯等等。
Linux 系统为我们提供了一些与时间同步相关的服务和命令,下面将一一介绍。
NTP 服务
NTP 是网络时间协议(Network Time Protocol)的简称,主要用于网络时间的同步,诞生于 20 世纪 80 年代,至今仍是互联网的基础性协议之一,使用 UDP 123 端口。
NTP 基于客户端(client)和服务器(server)架构,客户端发出包含客户端发出时间的数据包,服务器收到数据包并回复,回复的数据包中附加了服务器收到和发出数据包的时间。客户端收到回复后便获知自己与服务器的时间差,以及网络延迟时间,并据此调整自己的系统时间,达到时间同步的目的。

在 Linux 系统中,ntpq 命令可用于查询网络中连接的 NTP 服务器,例如:
$ sudo ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
127.127.1.0 .LOCL. 10 l - 64 0 0.000 0.000 0.000
*120.25.115.20 10.137.53.7 2 u 850 1024 377 1.288 0.108 0.280
行首加 * 号的是当前服务器。同时还列出了网络延迟时间(delay)、与服务器的时间差(offset)等关键的 NTP 时间数据。
如果时间不对,可以执行下面命令强制同步 NTP 时间:
$ sudo service ntp stop
$ sudo ntpd -gq
$ sudo service ntp start
systemd-timesyncd
systemd-timesyncd 是一个用于跨网络同步系统时钟的守护服务,它实现了一个 SNTP 客户端。与 NTP 的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。除非你打算为客户端提供 NTP 服务器或者连接本地硬件时钟,否则这个简单的 NTP 客户端应该更适合大多数设备。
systemd-timesyncd 守护进程运行只需要很少的特权,并且会跟网络服务 networkd 挂钩,仅在网络连接可用时才工作。每次收到一个新的 NTP 同步请求时,后台服务就把当前时间保存到磁盘,并尽可能在系统启动时修正系统时间,这样处理的目的是为了适应像 Raspberry Pi 这种缺少 RTC 的嵌入式设备。
如果要使用这个守护进程,需要在安装系统时创建一个新的系统用户和组"syste


1722

被折叠的 条评论
为什么被折叠?



