我有一台运行 Centos 5.2 的服务器,有没有更好的方法来了解服务器崩溃的原因或当时正在做什么?
抱歉,我是新手,如能得到任何帮助我将不胜感激~谢谢
答案1
如果您经历过内核恐慌,您可以设置一个远程内核控制台来捕获本地控制台上可能丢失的所有数据(特别是当崩溃来自不可屏蔽中断时,这往往会重新启动系统)。
在您预计可能崩溃的系统上:
/sbin/modprobe netconsole [email protected]/eth0,[email protected]/00:19:BB:31:B8:0E
- 6666 是任意端口号
- 10.1.1.16 是要通过其发送的本地接口的 IP 地址
- eth0 是要通过其发送的本地接口的名称
- 10.1.1.17 是要发送到的远程接口的 IP 地址
- 00:19:BB:31:B8:0E 是要发送到的远程接口的 MAC 地址
在远程系统上,运行(这需要您安装了 netcat):
nc -l -p 6666 -u | tee capture.file
这将捕获远程系统上的所有内核输出。它运行在更低的级别(内核中写入 /dev/klog 的同一点),因此即使 syslog 等已停止运行,您也可能看到内核崩溃时输出的最后一点信息。
答案2
尝试启动流程会计
/etc/init.d/psacct start
或/sbin/chkconfig psacct on
(开机自动启动)
然后使用 lastcomm(1) 查看何时运行了什么。
或者尝试安装在顶上,它将每 10 分钟记录一次您的机器内存和进程状态,以便您了解发生了什么。
atop -r /var/log/atop/atop_YYYYMMDD
然后使用 t 和 T 键前进和后退
在 99% 的情况下,从这两个方面可以清楚地知道到底发生了什么
答案3
您是否检查过 /var/log/dmesg、/var/log/messages 和 /var/log/syslog?