我有三个运行 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 refclock 的第 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 定期重启,但每11小时而不是每 2 小时。我希望有一种方法可以询问 systemd为什么这样做。
这似乎是 dhcpcd 的错。/lib/dhcpcd/dhcpcd-hooks 中有用于重写 ntp.conf 以添加或删除 DHCP 租约中指定的主机的挂钩。就我而言,没有这样的主机,但 dhcpcd 无论如何都在反弹 ntp。Neutering 66-ntp.conf(通过注释掉它底部的 if 语句的内容)以消除对基于 DHCP 的 NTP 配置的支持为代价来防止这种情况发生,但在这种情况下我对此很好。