Uptime

如何可靠地獲取系統啟動的時間戳?

  • April 23, 2021

我知道該uptime命令,但它會在啟動後返回秒數,因此如果我只是從目前時間戳中減去該數字,理論上如果在讀取正常執行時間和目前時間戳後秒數發生變化,我可以獲得不同的結果。uptime -s是我想要的,但它在 centos 上不可用(順便說一句,它是如何計算的?)。我可以得到 /proc 目錄的 ctime 嗎?這似乎給了我正確的數字,但我想知道是否每個 linux 系統都在啟動時創建了 /proc。

首先,在 Linux 上crtime棘手。也就是說,執行類似

$ stat -c %z /proc/ 
2014-10-30 14:00:03.012000000 +0100

或者

$ stat -c %Z /proc/ 
1414674003

可能正是您需要的。文件系統由 LFS 標准定義,/proc應該適用於任何 Linux 系統以及大多數(所有?)UNIXen。

或者,假設您真的不需要秒精度,而只需要正確的時間戳,您可以使用who

$ who -b
  system boot  2014-10-30 14:00

From man who: -b, –boot 上次系統啟動的時間

您可以使用 GNU 將其轉換為自紀元以來的秒數date

$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000

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