gnu coreutils date
是如何工作的?
我在這個網站上沒有看到任何類似的問題。雖然
manpage
有助於描述如何使用date
,但沒有太多背景資訊。即使是info
頁面(如手冊頁中所述:) ,也只是基於變數info '(coreutils) date invocation'
的操作方式而已。TZ
我想知道
date
命令行實用程序是如何工作的。具體來說,
date +%s
它返回自紀元以來的秒數,例如
1467743297
(自 以來的秒數1970-01-01 00:00:00 UTC
)。例如,我認為它不需要網際網路連接。再說一遍,它是否偶爾會嘗試與特定來源重新同步?如果是這樣,該來源是如何指定的?如果不是,那麼人們對按日期報告的值有多少信心?
該頁面的第 21.1.5 節
info
暗示date
僅處理系統/軟體時鐘,然後與 的任何同步hwclock
都取決於作業系統。所以……也許這個問題更合適**“哪些系統有更準確的date +%s
報告?”** 我想這也意味著精度date
僅限於機器硬體時鐘的精度,尤其是受系統/軟體時鐘的影響?(例如,即使使用高精度的硬體時鐘,軟體時鐘也會干擾、歪斜精度)。
date
根本不努力與任何東西同步,而只是進行一些系統呼叫(在 linux 上strace date ...
可能會顯示也可能不會顯示)來查找自系統已知的紀元以來的時間。系統本身可以與 BIOS 時鐘同步,或者如果虛擬機可以從執行它的父級獲取目前時間,或者可以使用 NTP(或其他或多或少做相同事情的軟體,例如較舊的
rdate
或代替精確時間協議 (PTP)) 與其他電腦同步時間,或者可以使用硬體 GPS 或無線電設備來設置時間。這些都不涉及date
,除非管理員正在收聽例如 BBC 廣播並在整點開始手動設置系統時間date
(他們仍然在整點做 doot doot doot dee 的事情嗎?)。系統時鐘的準確性取決於 NTP 配置(或使用的任何其他軟體)、NTP(或類似軟體)是否損壞、BIOS、BIOS 是否損壞(我見過四年後的系統啟動和該主機由於其他原因而損壞了 NTP 設置,這很有趣,這是一個帶有
Makefile
…) 的 NFS 伺服器,硬體時鐘是否異常,以及各種其他細節。如果您使用的是 NTP,則peers
命令ntpq
或漂移文件可能值得一看。對於最準確的時間(除了在每個主機上放置一個原子鐘……),您可能需要閱讀“Toward Higher Precision”中的 PTP(並了解Time is an Illusion)。