我有一台 SuSe Linux 服务器由于未知问题而挂起,我甚至怀疑是否有一个失控的进程不时运行导致它挂起。
问题是,挂起发生后我不知道去哪里找它...(我不想花一整天时间查看顶部以找到失控) - 所以我的问题是:SuSe 中是否有记录失控的日志?如果没有,有没有办法记录此类事情?
多谢!
答案1
更多信息会有所帮助。您如何定义“挂起”?假设您可以物理访问服务器,您可以检查挂起后屏幕上显示哪些内核消息。服务器停止后是否需要重新启动?
您可以在 /var/log/messages 中跟踪正常系统日志直至崩溃点。如果服务器停止时您有一个打开的会话,请运行 查看驱动程序消息dmesg
。
您有硬件的详细信息吗?如果这是服务器级硬件,您可能可以检查系统的硬件日志,看看是否存在 RAM 损坏等问题。
答案2
不,通常没有机制来告诉您究竟是什么导致了“挂起”。
当您的机器运行时,top
用来查找占用过多 CPU 的进程,free
检查内存问题(交换到磁盘会使机器非常非常慢)并查看 /var/log 浏览文件以查看是否有任何问题。
ps aux | grep Z
如果存在僵尸进程,将会过滤掉它。
答案3
我遇到了一个 SuSE 案例,其中一台服务器死机了。他们建议采取以下步骤:
- 连接一个串行控制台(对于冻结来说不是很有趣),你就得到了 iLO......
- 将系统日志重定向到远程机器(这样您就可以看到“最后的遗言” - 可能就在原始系统将其同步到 /var/log/messages 之前)
- 安装 KDUMP 内核和调试内核(让您有机会获得内核异常而不是冻结)
最后一个对我的情况有帮助 - 但是我能够通过触发某个操作来重新产生问题 - 然后我在冻结之前得到了一个内核调试,并且 SuSE 能够为我提供一个 PTF(指向修复)内核,从而消除了这个问题。
但你还是没有描述你的问题发生在什么情况下——半夜?从来没在工作期间?
答案4
要检查僵尸进程(已停止运行),我们可以使用命令。
ps aux|awk '$8 == "Z" {print $0}'
它将只打印已停止的进程。