我正在使用以下 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
会显示它: