我有三个运行 Bullseye 的树莓派。我不知道它是什么时候开始的(显然是为什么),但是 ntpd 每 2 小时就会重新启动一次。我在 Journalctl 输出或 daemon.log 中可以看到的只是
Dec 8 04:43:43 ntp1 systemd[1]: Stopping Network Time Service...
Dec 8 04:43:43 ntp1 systemd[1]: Stopped Network Time Service.
Dec 8 04:43:43 ntp1 systemd[1]: Starting Network Time Service...
ntpd 似乎没有做错什么。我怎样才能找出 systemd 这样做的原因并阻止它?
在这种情况下,ntpd 配置为具有本地 PPS 参考时钟的层 1 服务器,因此这就是为什么我宁愿它不要无缘无故地重新启动。
这是 ntp 服务文件:
[Unit]
Description=Network Time Service
Documentation=man:ntpd(8)
After=network.target
Conflicts=systemd-timesyncd.service
[Service]
Type=forking
# Debian uses a shell wrapper to process /etc/default/ntp
# and select DHCP-provided NTP servers if available
ExecStart=/usr/lib/ntp/ntp-systemd-wrapper
PrivateTmp=true
[Install]
WantedBy=multi-user.target
作为实验,我停止了 ntp 服务并使用相同的参数手动启动 ntpd,从那时起它就一直在运行。这并不能解决问题,但是证明了在没有systemd干扰的情况下,ntpd是稳定的。
systemd 是否会限制某个服务消耗的 CPU 时间?如果我看另一个运行 NTP 的 Raspberry Pi不是做 GPS 的事情,它也会被 systemd 定期重新启动,但是每次十一小时一次,而不是每两个小时一次。我希望有一种方法可以询问 systemd为什么它正在这样做。
答案1
这似乎是 dhcpcd 的错误。 /lib/dhcpcd/dhcpcd-hooks 中有一些钩子,旨在重写 ntp.conf 以添加或删除 DHCP 租约中指定的主机。就我而言,没有这样的主机,但 dhcpcd 无论如何都会反弹 ntp。中和 66-ntp.conf(通过注释掉其底部的 if 语句的内容)可以防止这种情况发生,但代价是消除对基于 DHCP 的 NTP 配置的支持,但在这种情况下我对此表示同意。