Ubuntu - 为什么 /var/log/dmesg 在启动后会停止更新?不显示控制台显示的 panic/cpu_hung 错误

Ubuntu - 为什么 /var/log/dmesg 在启动后会停止更新?不显示控制台显示的 panic/cpu_hung 错误

因此,我在主机上安装了 Ubuntu 10.04 VM。最新的 2.6.38-15-server 内核。/var/log/dmesg 仅显示启动,但之后将停止记录。它不会显示我试图排除故障的 trace/cpu_hung 错误。/var/log/dmesg.0 , dmesg.1 没有内容 - 我对崩溃期间控制台上显示的文本进行了字符串搜索,但 /var/log/* 中的任何地方都没有记录任何内容。

我必须打电话给提供商并要求他们截取控制台的屏幕截图,因为 dmesg 中没有显示任何内容。

为什么 /var/log/dmesg 不记录内核崩溃等信息?

答案1

无论你是否修复启动时间之后的内核日志,都无法解决内核崩溃消息。当你的内核崩溃时,它会停止调度,所以你的日志守护进程永远不会记录内核消息。如果你想获取这些信息,你可以查看kdump获取完整的内核核心转储和/或netconsole内核模块通过 UDP 将内核消息发送到远程syslog服务器。

至于将内核消息放入过去的启动时间但在严重内核崩溃之外,请尝试在(或如果使用)/var/log/dmesg中使用类似的方法:/etc/syslog.conf/etc/rsyslog.confrsyslog

kern.* /var/log/dmesg

对于rsyslog,该文件还必须包含:

$ModLoad imklog.so

如果您使用的话请告诉我syslog-ng,因为覆盖起来会比较棘手。

答案2

原因是它/var/log/dmesg是一个静态文件,在启动过程结束时创建。

我更熟悉 Debian,其中文件在对 savelog 的调用中/etc/init.d/bootmisc.sh创建。Ubuntu 通过 来实现这一点。/var/log/dmesg/etc/init/dmesg.conf

对于正常操作期间的系统日志记录,您需要参考/var/log/syslog,正如 Pierre Carrier 所指出的。

由于内核崩溃经常(但并非总是)中断用户进程(例如 syslog)和磁盘 I/O,因此您必须使用内核日志记录功能(kdump、netconsole)来捕获内核崩溃。另一种选择是通过串行控制台(可能是具有适当 IPMI/ILOM 支持的 LAN 串行)或附加的 gdb 会话进行记录。

答案3

尝试使用以下方式重新启动日志 Dameon

sudo service rsyslog restart

相关内容