我的 ubuntu 机器正在运行 Ubuntu 10.10,并且该机器正在运行我的应用程序服务器。
我怀疑我的机器今天在某个时间重新启动,但我不知道如何找出我的机器今天什么时间重新启动?如果它重新启动了,那么是谁重新启动了它以及为什么它重新启动了。有什么办法可以找到这些详细信息吗?
我尝试使用uptime
,这就是我得到的结果,这意味着我的机器已经运行了 20 小时 21 分钟(我说得对吗?)
david@machineA:~$ uptime
22:55:37 up 20:21, 3 users, load average: 0.01, 0.05, 0.01
谁能给我提供一些步骤,我如何才能找到这些详细信息?
答案1
第一个字段/proc/uptime
是你的朋友何时(用 来阅读cat /proc/uptime
)。这是系统启动的秒数。该文件的第二个字段是系统上空闲的 cpu 秒数(将其除以该系统中列出的 CPU 数/proc/cpuinfo
以获得实际秒数)。
# if your awk is new enough, 1 second resolution.
awk '//{print strftime("%c",systime()-$1)}' /proc/uptime
# for older awk, but requires bc binary, high resolution
date -d @$(echo $(date +%s.%N) - $(awk '{print $1}' /proc/uptime) |bc )
# older awk, 1 second resolution, no bc
date -d @$(( $(date +%s) - $(awk '{printf "%d",$1}' /proc/uptime) ))
将打印系统的启动时间,1秒之内。我说 1 秒内,因为 是小数,而 awk 只返回systime
整数。
这不会告诉您谁或为何重新启动。您能做的最好的事情就是命令的输出last
,它将记录正常的关闭和重新启动;以及由于硬重启而丢失的会话(例如电源故障、内核错误)。这些并不可靠,因为它们依赖于没有人篡改文件/var/log/wtmp*
。
以下是丢失会话的示例:
root@nms1:~# last -f /var/log/wtmp.1
root pts/0 10.x.y.z Mon Oct 27 05:41 gone - no logout
root pts/0 10.x.y.z Mon Oct 20 04:55 - 16:47 (11:51)
这是重新启动的示例。
[root@freepbx ~]# last
...
reboot system boot 2.6.32-431.el6.x Mon Oct 20 13:46 - 16:13 (3+02:27)
root pts/2 10.x.y.z Wed Oct 15 21:02 - 00:51 (2+03:48)
root pts/1 10.x.y.z Wed Oct 15 14:17 - 00:51 (2+10:33)
sitkasta pts/0 10.x.y.z Tue Oct 14 20:23 - down (5+17:22)
root pts/0 10.x.y.z Tue Oct 14 10:43 - 20:22 (09:39)
如果您想要更多内容,请查看audit
框架之类的内容,并将重新启动/关闭命令发送到可靠且安全的远程日志记录目的地。
答案2
使用以下命令查找机器停机时间。
上传记录
列表中未显示的时间为重启时间。