Ubuntu 使用 timesyncd 开启NTP时间同步,并替换为ntpd步进式的逐渐校正时间。
环境为 Ubuntu 22.04 LTS
时区
在 Ubuntu 20.04 及之后的版本中,内置了时间同步功能,并且默认使用systemd
的timesyncd
服务来激活。timesyncd
替代了老旧的 ntpdate
的功能。
检查当前时区
命令:
timedatectl status
命令的输出为
Local time: Mon 2022-12-12 23:35:24 CST Universal time: Mon 2022-12-12 15:35:24 UTC RTC time: Mon 2022-12-12 15:35:28 Time zone: Asia/Shanghai (CST, +0800)System clock synchronized: no NTP service: n/a RTC in local TZ: no
System clock synchronized: no
反映了没有和远程NTP服务器成功同步, NTP service: n/a
意味着timesyncd
没有启动和运行。RTC in local TZ: no
表示硬件时钟(RTC)设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间.
输出显示NTP服务没有激活,所以启动NTP服务
sudo timedatectl set-ntp on
开启成功后再次查看状态,输出为
System clock synchronized: yes NTP service: active RTC in local TZ: no
如果开启时出现错误提示 Failed to set ntp: NTP not supported
,则可以查看软件包systemd-timesyncd
有没有被安装。如果没有则用包管理安装,再安装后尝试再次开启timedatectl。
apt list --installed | grep systemd-timesyncdsudo apt-get install systemd-timesyncd
设置时区
时区命名约定通常使用“地区/城市”格式
列出所有可用的时区:
timedatectl list-timezones
修改时区:
sudo timedatectl set-timezone Asia/Shanghai
修改NTP时间同步服务器
NTP服务器(Network Time Protocol)是用来使计算机时间同步化的一种协议,NTP服务器确保不同的系统之间时间戳保持同步。
在新安装的ubuntu系统上,基于 systemd 的工具的NTP服务器默认为ntp.ubuntu.com
。查看系统日志,有时会出现时间超时记录:
systemd-timesyncd[354]: Timed out waiting for reply from 91.189.94.4:123 (ntp.ubuntu.com).
要修改时间同步服务器,需要修改配置文件/etc/systemd/timesyncd.conf
sudo vim /etc/systemd/timesyncd.conf
这个文件的默认内容是这样的:
# ...[Time]#NTP=##FallbackNTP=ntp.ubuntu.com#RootDistanceMaxSec=5#PollIntervalMinSec=32#PollIntervalMaxSec=2048
把 [Time]
下的注释取消掉。NTP
为主时间同步服务器,FallbackNTP
为备用服务器。
[Time]NTP=ntp.tencent.comFallbackNTP=ntp1.tencent.com,ntp2.tencent.com,ntp3.tencent.comRootDistanceMaxSec=5PollIntervalMinSec=32PollIntervalMaxSec=2048
重启服务
service systemd-timesyncd restart
使用 ntpd 渐进式更新时间
timesyncd
(和ntpdate)是断点更新,ntpd 为步进式的逐渐校正时间,不会出现时间跳变。另外有些应用程序可能对时间的任何干扰很敏感。ntpd使用复杂的技术来不断地、逐步地保持系统的时间。
关闭 timesyncd
在安装 ntpd
之前,需要关闭 timesyncd
,以防止这两个服务之间的相互冲突。
sudo timedatectl set-ntp no
使用 timedatectl status
检查输出是否出现了NTP service: inactive
。这意味着timesyncd
已经停止。
安装 ntpd:
使用apt安装ntp
软件包:
sudo apt updatesudo apt install ntp
ntpd
将在你的安装完成后自动开始运行和工作。
ntpd
可能需要几分钟的时间来建立连接。
检查 ntpd 的运行状态:
systemctl status ntp
查看 NTP 服务端口 UDP 123
端口是否被正常监听:
netstat -nupl
查询ntpd
的详细状态信息:
ntpq -p
ntpq
是 ntpd
的一个查询工具。-p 标志要求提供 ntpd
所连接的 NTP 服务器的信息。
如果提示 No association ID's returned
则多半是配置文件有问题。
配置 ntpd
vim /etc/ntp.conf
原始的配置文件如下:
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for helpdriftfile /var/lib/ntp/ntp.drift# Leap seconds definition provided by tzdataleapfile /usr/share/zoneinfo/leap-seconds.list# Enable this if you want statistics to be logged.#statsdir /var/log/ntpstats/statistics loopstats peerstats clockstatsfilegen loopstats file loopstats type day enablefilegen peerstats file peerstats type day enablefilegen clockstats file clockstats type day enable# Specify one or more NTP servers.# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for# more information.pool 0.ubuntu.pool.ntp.org iburstpool 1.ubuntu.pool.ntp.org iburstpool 2.ubuntu.pool.ntp.org iburstpool 3.ubuntu.pool.ntp.org iburst# Use Ubuntu's ntp server as a fallback.pool ntp.ubuntu.com# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for# details. The web page # might also be helpful.## Note that "restrict" applies to both servers and clients, so a configuration# that might be intended to block requests from certain clients could also end# up blocking replies from your own upstream servers.# By default, exchange time with everybody, but don't allow configuration.restrict -4 default kod notrap nomodify nopeer noquery limitedrestrict -6 default kod notrap nomodify nopeer noquery limited# Local users may interrogate the ntp server more closely.restrict 127.0.0.1restrict ::1# Needed for adding pool entriesrestrict source notrap nomodify noquery# Clients from this (example!) subnet have unlimited access, but only if# cryptographically authenticated.#restrict 192.168.123.0 mask 255.255.255.0 notrust# If you want to provide time to your local subnet, change the next line.# (Again, the address is an example only.)#broadcast 192.168.123.255# If you want to listen to time broadcasts on your local subnet, de-comment the# next lines. Please do this only if you trust everybody on the network!#disable auth#broadcastclient
修改配置文件之后,需要重新加载 ntpd
Systemctl
是一个systemd
工具,它负责控制systemd
系统和服务管理程序。Systemd
是一个系统管理守护进程,工具和库的集合,功能为用于类Unix系统的中心管理和配置平台。
systemctl reload ntp.service
参考链接:
How To Set Up Time Synchronization on Ubuntu 20.04 - DigitalOcean
来源地址:https://blog.csdn.net/sorcererr/article/details/128675919