ntpdate 和 ntpd同時開啟,會導致ntpdate同步時間有誤
Issue Description
客戶遇到一個問題,在ntpdate時,同步時間總會出現錯誤
Analysis
這個問題在平臺上覆現不到,初步有懷疑為網路問題
不過,我有在log裡看到下面這個讓我比較介意:
16 Jul 10:17:11 ntpdate[522]: the NTP socket is in use, exiting
這是呼叫ntpdate之後列印的log
但是在我復現這個問題的時候,一直沒有這個error列印
後來查詢資料,在開啟ntpd的時候,再去ntpdate,會報這個錯誤
然後我就猜測客戶平臺可能打開了ntpd
為了驗證猜測,我先打開了ntpd
$ ntpd
然後又開了三次ntpdate
$ ntpdate pool.ntp.org&
果然復現了客戶一樣的問題
第一次ntpdate是列印那個error,後面success的時間是錯誤的
然後,就向客戶確認是否平臺中有ntpd程序
經確認,的確平臺中有ntpd程序先啟動了導致了與ntpdate衝突
Solution
ntpd同步時間是加快時間流速的方法,
而ntpdate是越變,詳細查閱ntp的官方說明文件。
可以通過增加 -u 選項,即可解決ntpd 與ntpdate衝突問題
即 ntpdate -u pool.ntp.org
-u 選項的具體說明如下:
Direct ntpdate to use an unprivileged port for outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to privileged ports, and you want to synchronize with hosts beyond the firewall. Note that the -d option always uses unprivileged ports.
不在使用預設埠 而是選擇了一個其他的埠,經測試,沒有出現過該問題
建議ntpdate 和 ntpd的使用方法是
在開機時 使用ntpdate同步時間, 在機器執行過程中 用ntpd命令同步時間