Mickey Shine Asked: 2009-07-25 00:33:45 +0800 CST2009-07-25 00:33:45 +0800 CST 2009-07-25 00:33:45 +0800 CST 我怎么知道服务器崩溃时在做什么? 772 我有一台在 Centos 5.2 上运行的服务器,有没有更好的方法来了解服务器崩溃的原因或当时它在做什么? 对不起,我是新手,感谢任何帮助〜谢谢 linux centos kernel 6 个回答 Voted Best Answer James F 2009-07-25T01:27:50+08:002009-07-25T01:27:50+08:00 如果您经历过内核恐慌,您可以设置一个远程内核控制台来捕获本地控制台上可能丢失的所有数据(特别是如果崩溃来自一个不可屏蔽的中断,这往往会重新启动系统)。 在您预期可能会崩溃的系统上: /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 等。al已经停止运营。 Aleksandar Ivanisevic 2009-07-25T06:11:19+08:002009-07-25T06:11:19+08:00 尝试启动流程记帐 /etc/init.d/psacct start或/sbin/chkconfig psacct on(用于启动时自动启动) 然后使用 lastcomm(1) 查看什么时候运行。 或尝试安装atop,它会每 10 分钟记录一次您的机器内存和进程状态,以便您了解发生了什么。 atop -r /var/log/atop/atop_YYYYMMDD然后使用 t 和 T 键前进和后退 在 99% 的案例中,从这两个案例中可以清楚地看出到底发生了什么 Cian 2009-07-25T00:40:46+08:002009-07-25T00:40:46+08:00 您是否检查过 /var/log/dmesg、/var/log/messages 和 /var/log/syslog? Kyle Brandt 2009-07-25T04:41:22+08:002009-07-25T04:41:22+08:00 什么样的崩溃?大家对dmesg/messages日志的推荐都不错。如果它只是在有机会记录任何内容之前“关闭”,我猜它可能是过热或存在电源问题。 如果是这种情况,如果存在硬件日志,则转到硬件日志可能会有所帮助。如果您使用戴尔服务器,戴尔支持可以为您提供 Linux 工具来访问这些日志。其他供应商可能会提供类似的功能。 您也可以使用memtest86检查内存。 goo 2009-07-25T01:50:41+08:002009-07-25T01:50:41+08:00 通过网络收集核心可能是大材小用,您可以在本地转储它。这是设置和测试 kdump 的指南。如果您按照说明操作,但仍然无法在本地创建转储,那么您应该继续通过网络进行捕获。 当然,一旦有了核心转储,您就需要使用crash实用程序对其进行一些分析。您需要为正在运行的内核安装正确的kernel-debuginfo rpm,然后调用 crash - 您应该从白皮书中获得一般要点。如果您可以打开它,您首先应该查看的是日志 - 向下滚动到底部,您应该会获得一些关于崩溃发生时正在发生的事情的线索。 wzzrd 2009-07-25T01:26:29+08:002009-07-25T01:26:29+08:00 您可以将机器配置为通过网络进行内核核心转储,但您仍然需要熟练的人来调查。
如果您经历过内核恐慌,您可以设置一个远程内核控制台来捕获本地控制台上可能丢失的所有数据(特别是如果崩溃来自一个不可屏蔽的中断,这往往会重新启动系统)。
在您预期可能会崩溃的系统上:
在远程系统上,运行(这要求您安装了 netcat):
这将捕获远程系统上的所有内核输出。这运行在低得多的级别(内核中写入 /dev/klog 的同一点),因此您可能会看到内核在恐慌时输出的最后一点信息,即使 syslog 等。al已经停止运营。
尝试启动流程记帐
/etc/init.d/psacct start
或/sbin/chkconfig psacct on
(用于启动时自动启动)然后使用 lastcomm(1) 查看什么时候运行。
或尝试安装atop,它会每 10 分钟记录一次您的机器内存和进程状态,以便您了解发生了什么。
atop -r /var/log/atop/atop_YYYYMMDD
然后使用 t 和 T 键前进和后退在 99% 的案例中,从这两个案例中可以清楚地看出到底发生了什么
您是否检查过 /var/log/dmesg、/var/log/messages 和 /var/log/syslog?
什么样的崩溃?大家对dmesg/messages日志的推荐都不错。如果它只是在有机会记录任何内容之前“关闭”,我猜它可能是过热或存在电源问题。
如果是这种情况,如果存在硬件日志,则转到硬件日志可能会有所帮助。如果您使用戴尔服务器,戴尔支持可以为您提供 Linux 工具来访问这些日志。其他供应商可能会提供类似的功能。
您也可以使用memtest86检查内存。
通过网络收集核心可能是大材小用,您可以在本地转储它。这是设置和测试 kdump 的指南。如果您按照说明操作,但仍然无法在本地创建转储,那么您应该继续通过网络进行捕获。
当然,一旦有了核心转储,您就需要使用crash实用程序对其进行一些分析。您需要为正在运行的内核安装正确的kernel-debuginfo rpm,然后调用 crash - 您应该从白皮书中获得一般要点。如果您可以打开它,您首先应该查看的是日志 - 向下滚动到底部,您应该会获得一些关于崩溃发生时正在发生的事情的线索。
您可以将机器配置为通过网络进行内核核心转储,但您仍然需要熟练的人来调查。