1. 程式人生 > >ntpdate 和 ntpd同時開啟,會導致ntpdate同步時間有誤

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

 –q pool.ntp.org&

然後又開了三次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命令同步時間