介绍
systemd-timesyncd 是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端。与NTP的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。除非你打算为客户端提供 NTP 服务器或者连接本地硬件时钟,否则这个简单的NTP客户端应该更适合大多数人。守护进程运行只需要尽可能小特权,并且会跟网络服务 networkd 挂钩,仅在网络连接可用时才工作。每次收到一个新的NTP同步请求时,后台服务就把当前时间保存到磁盘,并尽可能在系统启动时修正系统时间,这样处理的目的是为了适应像Raspberry Pi和嵌入式设备这种缺少 RTC 的系统,并确保这些系统时单点处理(即使它并不是总是正确的)。
配置文件介绍
systemd-timesyncd 启动时会读取 /etc/systemd/timesyncd.conf 配置文件,内容如下:
kylin@kylin:~$ sudo vim /etc/systemd/timesyncd.conf
默认虽然上面的选项都处于注释状态,当设备联网时,systemd-timesyncd还是会去默认的NTP服务器进行同步,如果设备未联网,服务会一直等待到网络连接才开始同步网络时间
如果要更改NTP服务器请修改上面的选项,选项解释如下:
NTP=
一个空格分隔的NTP服务器列表, 可以使用主机名,也可以使用IP地址。
FallbackNTP=
一个空格分隔的NTP服务器列表,用作备用NTP服务器。 可以使用主机名,也可以使用IP地址。 。
RootDistanceMaxSec=
最大可接受的"root distance"秒数(最大误差)。 默认值为 5 秒。
PollIntervalMinSec=, PollIntervalMaxSec=
NTP消息的 最小/最大轮询间隔秒数。 PollIntervalMinSec= 必须不小于 16 秒。 PollIntervalMaxSec= 必须大于 PollIntervalMinSec= 。 PollIntervalMinSec= 默认为 32 秒, PollIntervalMaxSec= 默认为 2048 秒。对时间隔在最大和最小间隔之间
测试轮询间隔秒数
1.客户端测试脚本(每秒输出时间到指定文本)
2.客户端测试脚本(每秒将时间修改为9:00)
3.修改客户端timesyncd.conf配置文件1
测试结果1
4.修改客户端timesyncd.conf配置文件2
测试结果2
使用
举例将同步的NTP服务器设置成内网ntp服务器
kylin@kylin:~$ sudo vim /etc/systemd/timesyncd.conf
##只设置NTP这行,其它的不必,增加2个NTP服务器,中间用空格隔开
重启systemd-timesyncd服务生效
kylin@kylin:~$ sudo systemctl restart systemd-timesyncd.service
再次查看服务状态
kylin@kylin:~$ sudo systemctl statust systemd-timesyncd.service
验证使用
kylin@kylin:~$ timedatectl show-timesync --all