Systemd

systemd 每隔幾個小時重新啟動一次 ntp。為什麼?

  • December 18, 2021

我有三個執行 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/dh​​cpcd/dhcpcd-hooks 中有用於重寫 ntp.conf 以添加或刪除 DHCP 租約中指定的主機的掛鉤。就我而言,沒有這樣的主機,但 dhcpcd 無論如何都在反彈 ntp。Neutering 66-ntp.conf(通過註釋掉它底部的 if 語句的內容)以消除對基於 DHCP 的 NTP 配置的支持為代價來防止這種情況發生,但在這種情況下我很好。

引用自:https://unix.stackexchange.com/questions/680704