上次重新启动和 who -b 显示不同的结果?

上次重新启动和 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 显示系统上次在 L​​inux 上启动的不同时间,但是却说他的 uptime 和 who -b 不一致,和我的情况不同。

答案1

在 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

相关内容