Date

gnu coreutils date 是如何工作的?

  • July 5, 2016

我在這個網站上沒有看到任何類似的問題。雖然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)。

引用自:https://unix.stackexchange.com/questions/294076