我有一个 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