Reboot
上次重新啟動和 who -b 顯示不同的結果?
我正在使用以下 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 顯示系統上次在 Linux 上啟動時的不同時間,但它說他的 uptime 和 who -b 彼此不一致,與我的情況不同。
在 Linux 上,預設情況下,所有三個命令都使用不同的資訊源。
uptime
使用核心提供的資訊/proc/uptime
。後者包含兩條資訊:系統的正常執行時間,包括掛起時間和空閒程序所用時間。這些值是準確的。
who -b
使用儲存在/var/run/utmp
. 在目前系統上,這確實是/run/utmp
,並且僅包含目前引導的資訊(當系統重新引導/run
時tmpfs
,它會失去其內容);但是對於目前的啟動,它也是準確的。
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