Reboot

上次重新啟動和 who -b 顯示不同的結果?

  • October 15, 2021

我正在使用以下 3 個命令來檢查我的電腦重新啟動時的最新時間點:

last reboot
who -b
uptime

上次重啟的結果是:

wtmp begins Sat Oct  9 04:49:27 2021

who -b 的結果是:

system boot  2018-01-11 20:52

正常執行時間的結果是:

22:49:01 up 1372 days, ...

似乎 uptime 和 who -b 的結果彼此一致,但與上次重新啟動的結果不一致。

我發現這篇文章Uptime 和 who -b 顯示系統上次在 L​​inux 上啟動時的不同時間,但它說他的 uptime 和 who -b 彼此不一致,與我的情況不同。

在 Linux 上,預設情況下,所有三個命令都使用不同的資訊源。

uptime使用核心提供的資訊/proc/uptime。後者包含兩條資訊:系統的正常執行時間,包括掛起時間和空閒程序所用時間。這些值是準確的。

who -b使用儲存在/var/run/utmp. 在目前系統上,這確實是/run/utmp,並且僅包含目前引導的資訊(當系統重新引導/runtmpfs,它會失去其內容);但是對於目前的啟動,它也是準確的。

last reboot使用儲存在/var/log/wtmp. 儲存在那裡的資訊通常也是準確的,但您需要的資訊可能不再儲存在那裡:wtmp在許多設置中輪換,通常每月輪換一次。這意味著如果系統的目前引導時間早於wtmp的上次輪換時間,則顯示的資訊將是部分的。特別是,last reboot最終顯示最後一次旋轉時間,而不是系統的實際啟動時間。這就是last顯示wtmp開始時間的原因:這是 顯示的資訊的時間範圍last

wtmp包含上次啟動時間時,last reboot會顯示它:

$ last reboot | head -n 1
reboot   system boot  5.10.0-8-amd64   Mon Sep 13 15:56   still running
$ who -b
        system boot  2021-09-13 15:56
$ uptime
09:11:03 up 31 days, 17:15, 13 users,  load average: 0.48, 0.34, 0.42

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