我最近从 21.04 升级到 pop_os 21.10,每次启动设备时,我都会在计算机上设置随机时间/日期。设置下的自动日期和时间不起作用。
以下是 的输出timedatectl
:
Local time: Wed 2022-02-23 10:43:32 IST
Universal time: Wed 2022-02-23 05:13:32 UTC
RTC time: Wed 2019-07-24 03:48:55
Time zone: Asia/Kolkata (IST, +0530)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
我尝试运行timedatectl set-ntp true
以启用系统时钟同步,但它不起作用。
也尝试过这Ubuntu 18.04 的类似问题的解决方案建议@restart
在配置中添加一个参数crontab
,但这也不起作用。
答案1
因为timedatectl
表示 NTP 服务处于活动状态,但时钟仍未同步,这意味着 NTP 服务无法联系任何 NTP 服务器,可能是因为该服务未完全配置或因为防火墙阻止了 NTP 数据包。
第一个任务是找出同步服务的实际名称。
您可以在 中找到详细信息man systemd-timedated.service
,但基本上检查目录或/usr/lib/systemd/ntp-units.d/
名称带有扩展名的文件。这些文件将定义可以使用的潜在 NTP 服务的名称,如果有多个文件,则文件的字母数字排序将确定其优先顺序。/usr/local/lib/systemd/ntp-units.d/
/etc/systemd/ntp-units.d
.list
timedatectl
.list
或者,服务的优先顺序可以由 的环境变量定义systemd-timedated.service
。如果你跑步systemd cat systemd-timedated.service | grep Environment
,你可能会发现这样一行
Environment=SYSTEMD_TIMEDATED_NTP_SERVICES=<primary NTP service>.service:<1st alternative NTP service>.service:<2nd alternative NTP service>.service
或者您可能会找到一个EnvironmentFile
引用,指示可以为服务定义此类变量的文件。
最常见的 NTP 同步服务是chronyd.service
、ntp.service
(或ntpd.service
在某些发行版中)和systemd-timesyncd.service
,因此即使您找不到任何指示优先顺序的内容,它也很可能是这三个服务之一。
如果用于 NTP 同步的服务是chronyd.service
,则查询其连接状态的命令是chronyc sources -a -v
。
对于ntp[d].service
,您可以使用ntpq -np
.
chronyc sources
和的输出ntpq -np
有些相似:当 NTP 同步正常工作时,列表最左边的列中应该有一个星号,指示该系统当前同步到的服务器。该Reach
列将以八进制数字形式指示最新 8 个 NTP 请求的状态:如果 NTP 服务器已响应所有这些请求,则该列中的值将为377
。值Reach
表示0
服务器不可访问。
要查询状态systemd-timesyncd.service
,可以使用timedatectl timesync-status
.
一旦您知道同步服务器尝试使用哪些 NTP 服务器,您就可以开始对它们的连接进行故障排除。如果要使用的NTP服务器列表为空或错误,您应该先更正它并重新启动同步服务(或重新启动系统)。
对于,NTP 服务器将在或 文件中chronyd
列出。/etc/chrony/chrony.conf
/etc/chrony/sources.d/*.source
对于ntp[d].service
,配置文件将为/etc/ntp.conf
.
systemd-timesyncd.service
其配置在/etc/systemd/timesyncd.conf
和/或/etc/systemd/timesyncd.conf.d/*.conf
文件中,但也可以通过/etc/systemd/network/*.network
文件或 DHCP 配置信息进行配置。
如果ntpdate
安装了该命令,其调试模式可用于测试与 NTP 服务器的连接。运行ntpdate -d <NTP server name or IP address>
并查看输出。如果输出的最后一行显示no server suitable for synchronization found
,则该命令无法联系您指定的 NTP 服务器。如果该命令从 NTP 服务器获得有效响应,则其输出的最后一行将指示该命令的数量将有如果未处于调试模式,则调整本地系统时钟。