強制 systemd timesyncd 立即與 NTP 伺服器同步時間
我已經配置 systemd timesyncd 從 NTP 伺服器獲取時間:
/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org systemctl restart systemd-timesyncd.service timedatectl set-ntp true
狀態如下:
$ timedatectl status ... Network time on: yes NTP synchronized: no
正如輸出所暗示的那樣,時間尚未同步。有人可以幫我解決以下問題嗎?
- timesyncd 與 NTP 同步需要多長時間?它以什麼間隔執行此操作,我在哪裡可以檢查和更改它們?
- 在緊急情況下:我只能手動設置時間還是可以強制 timesyncd 立即與 NTP 伺服器同步?
要使用實際的 NTP 實現,您需要安裝和配置一個,
chrony
或者可能是ntpd
. 如果您需要對時間性能進行任何監控,請執行此操作。我會假設chrony。添加
iburst
到您的pool
或server
配置中的行以加速最初的幾個數據包。可能還需要幾分鐘才能穩定下來,請耐心等待。在編輯 chrony.conf 時,查看何時允許執行步驟。例如,
makestep 1.0 3
意味著在 chronyd 啟動後的前 3 次更新中,大於 1 秒的偏移量會立即設置時鐘。回到過去對某些應用程序來說是不利的,因此一旦系統執行,通常不允許大步驟。在命令行上,可以查詢每個變數。
chronyc tracking
將顯示目前偏移量。了解您的要求是什麼,一秒的精度可以輕鬆容忍數十毫秒的偏移。
chronyc makestep
不帶參數將立即進行目前調整。通常不需要,有相應的配置文件指令,chrony 會自行穩定地調節時鐘。makestep
CLI 上的用於在您不想重新啟動 chronyd 時以互動方式修復 NTP。
timesyncd
是一個 SNTP 客戶端,可以設置時間,但不能逐漸和連續地訓練它,也不能根據質量過濾遠端 NTP 伺服器。(它也不能與時間硬體或 PTP 通信,只能與 NTP 協議通信。)比重複的要好一點ntpdate
,我的意思是不是很好的時鐘。就個人而言,我在大多數伺服器上替換它。關於使用 timesyncd 設置時間的唯一方法是手動:
timedatectl set-time "2019-01-15 00:40:16"
. 它沒有強大的手段來約束和監控時鐘。Basic NTP stats viatimedatectl timesync-status
是一個相對較新的東西,我認為 Red Hat 7 或 Ubuntu 18.04 中沒有該選項。systemd 將“同步”定義為是否曾經使用 NTP 告訴 Linux 調整時鐘。具體來說,如果核心規程呼叫 adjtimex() 返回沒有錯誤,而不是初始狀態。請參閱原始碼 systemd/src/basic/time-util.c。