Uptime 和 who -b 显示系统上次在 L​​inux 上启动的不同时间

Uptime 和 who -b 显示系统上次在 L​​inux 上启动的不同时间

我有一个 Linux 系统,它向我显示系统上次启动的两个不同时间。

root@linux:~ # who -b; uptime
          system boot  2009-07-09 20:51 
11:48am  up 1 day  0:54,  1 user,  load average: 0.01, 0.03, 0.00

我想谁在显示 /var/log/wtmp 的内容和正常运行时间我不知道。

有什么办法可以解决这个差异吗?我昨天重新启动了系统,所以我知道正常运行时间向我显示的内容是正确的。

答案1

[我在这里发现了一些误解,我认为这篇文章最终会消除这些误解]

应该没有任何区别,因为两者都指/var/run/utmp文件,文件有自己的格式来存储记录。如果有任何差异,那么你的 utmp 文件就被破坏了。正常运行时间显示自系统启动以来已经过去的时间量或系统已运行的时间。它不会告诉您系统时钟或系统启动时间。系统启动时间信息存储在/var/run/wtmp文件中。

[centos@centos temp]$ date; uptime; who -b
Fri Dec  9 20:41:40 IST 2011
 20:41:40 up  1:32,  2 users,  load average: 0.50, 0.37, 0.29
         system boot  2011-12-09 19:11

uptime 也指 /proc/uptime,它本质上将计数器保留在内核中。

[centos@centos temp]$ sleep 1; cat /proc/uptime; uptime; sleep 5; cat /proc/uptime ; uptime
5914.79 5271.83
 20:47:39 up  1:38,  2 users,  load average: 0.29, 0.31, 0.27
5920.07 5276.80
 20:47:44 up  1:38,  2 users,  load average: 0.56, 0.36, 0.29

/var/run/wtmp由last/lastb 命令引用。who&w引用/var/run/utmp文件。last reboot将显示自创建日志文件以来所有重新启动的日志。

此外,如果您有 /proc 文件系统,那么诸如此类的工具procinfo也可以为您提供启动时间。

例子:

bash$ procinfo | grep Bootup
Bootup: Wed Mar 21 15:15:50 2001 Load average: 0.04 0.21 0.34 3/47 6829

答案2

我见过当 BIOS 时钟不同步时会发生这种情况。您可以通过运行来验证:

$ hwclock --show                  
Tue 30 Aug 2011 12:48:52 PM PDT  -1.000516 seconds

如果此选项关闭,您应该将其同步备份(使用 --set 选项)。如果您发现这种情况经常发生,您可能需要更换主板上的 CR2032http://www.hardwaresecrets.com/article/81

相关内容