Ntp
ntpdate 校正是原子的嗎?
從昨天(7 月 30 日)開始,我在 /var/log/syslog 中有以下內容
Dec 16 22:54:05 omap ntpdate[432]: step time server 91.189.94.4 offset 12052648.821465 sec
ntpdate 91.189.94.4“更正”了我從 7 月 30 日到 12 月 16 日的時鐘!根據http://www.pool.ntp.org/scores/91.189.94.4,該伺服器的關閉時間不超過 2 毫秒。
現在,我確實有一個腳本,它
date
在系統啟動時呼叫該命令,以便以 ~1s 的精度設置時鐘。粗略時間從本地網路讀取,並被date
呼叫來設置時間。由於系統沒有實時時鐘,因此我必須按照這些方式做一些事情,並且 Internet 連接可能無法用於 NTP。我不確定 Linux 如何在沒有可用時鐘的情況下猜測初始時間,但我觀察到它可能非常錯誤(這是合理的)。我對發生的事情的唯一想法是:
- 系統啟動並將時鐘初始化到某個時間點,比如 3 月 15 日
ntpdate
開始與 NTP 伺服器通信,確定 3 月 15 日與實際日期相比有多大錯誤- 我的腳本將系統時鐘設置為 7 月 30 日
ntpdate
確定時鐘慢了 12052648s,並添加了修正,假設時鐘仍然在 3 月 15 日- 12052648s實際上被添加到了 7 月 30 日,將時鐘帶到了 12 月 16 日。
坦率地說,我不太熟悉 NTP 的工作原理。以上合理嗎?能不能有別的解釋?
在不了解您的設置的情況下,您的理論聽起來是合理的。
您將需要更改啟動腳本以確保
date
設置系統日期的命令在ntpdate
啟動之前完成。
我不確定你的時鐘是如何進入它的狀態的,但我可以建議你
date
盡可能消除呼叫命令的腳本嗎?在我使用過的大多數係統上,在啟動時設置系統時鐘的常用方法是:
- 啟動網路。
ntpd
從-g
同步時鐘 開始。
-g
是一個新的選項,它可以讓 ntpd隨時調整時鐘——如果你的版本ntpd
不支持你ntpdate -b some.time.server
在啟動 NTP 守護程序之前執行的 fkag如果您的系統太舊以至於它正在做一些與此完全不同的事情,那麼它可能也太舊以至於不受支持,所以我會毫不猶豫地將啟動腳本更改為更加理智……