Ntp
在不知道產品中使用的ntp客戶端的情況下,如何查看系統時間是否與NTP伺服器同步?
在不知道產品中使用的NTP客戶端的情況下,如何查看系統時間是否與NTP伺服器同步?我正在開發一個可以在容器或獨立系統中執行的應用程序。我的應用程序要求在嘗試執行某些操作之前確保系統時間同步。但是,即使在主機作業系統中使用了一個或另一個 NTP 客戶端,也不能保證 NTP/chrony 包的可用性在容器中可用。
所以我正在尋找一種統一的方式來知道系統時間是否同步?
通用計算上的應用程序無法在所有情況下都知道時間同步在它們執行的主機上是如何工作的。在容器中,您看不到也無法連接到主機上執行的 chronyd 或 ntpd,但這可以很好地保持時間。或者依賴主機時間同步的 VM 來賓,也不可見。進一步使一般答案變得困難,NTP 實現比您想像的要多:chrony、ntp、ntpsec、openntpd、w32tm。
通常記錄正確時間的重要性就足夠了。
在某些平台上,對 ntpd 啟動的依賴是相對簡單的。在 RHEL 上,等待時間同步
systemctl enable chrony-wait
並添加到您的 systemd 單元After=time-sync.target Requires=time-sync.target
然而,有些應用程序具有嚴格的時間要求。我能想到的最苛刻的是時間戳權威,其中一個索賠標準要求不到一秒的偏移量,否則什麼也不能簽發。這種激進的響應意味著應用程序會進行自己的時間檢查。
也許捆綁一個 SNTP 客戶端,它檢查應用程序中的 NTP 偏移量,與可配置的 NTP 伺服器。無法檢查 ntpd 是否正常執行,但無論時間同步如何對主機起作用,都可以檢查偏移量。