如何知道服务器在崩溃时正在做什么?

我有一个运行在Centos 5.2上的服务器,有没有更好的方法来知道为什么服务器崩溃或当时在做什么?

对不起,我是一个新手,任何帮助表示赞赏〜谢谢

如果您遇到内核恐慌,您可以设置一个远程内核控制台来捕获本地控制台上可能丢失的所有数据(特别是当崩溃来自不可屏蔽的中断,这往往会重新启动系统)。

在您期望的系统上可能会崩溃:

/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 et。 al已经停止运作。

尝试启动stream程会计

/etc/init.d/psacct start/sbin/chkconfig psacct on (用于启动时自动启动)

然后使用lastcomm(1)来查看什么时候正在运行。

或者尝试安装在上面 ,它会每隔10分钟logging你的机器内存和进程状态,这样你就可以知道发生了什么事情。

atop -r /var/log/atop/atop_YYYYMMDD ,然后使用t和T键前进和后退

在99%的案例中,从这两个案例可以清楚地看到究竟发生了什么

你检查了/ var / log / dmesg,/ var / log / messages和/ var / log / syslog?

什么样的崩溃? 每个人对dmesg /消息日志的build议都不错。 如果在有机会logging任何事情之前,它只是“closures”,我想可能是过热或有电源问题。

如果是这种情况,如果硬件日志存在,可能会有帮助。 如果您使用戴尔服务器,戴尔支持可以为您提供Linux工具来访问这些日志。 其他厂商可能提供类似的function。

你也可以用memtest86检查内存。

通过networking收集一个核心可能是矫枉过正的,你可以在本地转储它。 这是设置和testingkdump 的指南 。 如果你按照说明,仍然不能得到在本地创build的转储,那么你应该继续捕捉通过networking..

当然,一旦你有一个核心转储,你需要使用崩溃工具对它进行一些分析。 您将需要为正在运行的内核安装正确的kernel-debuginfo rpm,然后调用崩溃 – 您应该从白皮书中获得一般要点。 如果你可以把它打开,你应该看的第一件事就是日志 – 向下滚动到底部,你应该得到一些关于发生崩溃时的情况的线索。

您可以将机器configuration为通过networking执行内核核心转储,但是您仍然需要熟练的人员来研究这一点。