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

所以我在主机上安装了Ubuntu 10.04安装虚拟机。 最新的2.6.38-15服务器内核。 / var / log / dmesg只显示启动,但在此之后将停止logging。 它不会显示我正在尝试排除故障的trace / cpu_hung错误。 /var/log/dmesg.0,dmesg.1什么也没有 – 我做了一个stringsearch在崩溃期间在控制台上显示的文本,没有任何东西被logging在/ var / log / *的任何地方。

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

为什么/ var / log / dmesg不logging内核恐慌,还是这样的?

无论您是否修复了内核日志logging过去的启动时间,都无助于内核恐慌信息。 当你的内核出现混乱时,它会停止调度,所以你的日志守护进程不会记下内核消息。 如果你想抓住这些,你可以看看kdump来获得完整的内核核心转储和/或netconsole内核模块,通过UDP将内核消息发送到远程syslog服务器。

至于让内核消息进入/var/log/dmesg过去的启动时间,但是在严重的内核崩溃之外,试着在/etc/syslog.conf (或者如果使用rsyslog /etc/rsyslog.conf )有这样的内容:

 kern.* /var/log/dmesg 

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

 $ModLoad imklog.so 

让我知道,如果你使用的是syslog-ng ,覆盖会有点棘手。

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

我更熟悉Debian,其中/etc/init.d/bootmisc.sh文件在调用savelog时创build/var/log/dmesg 。 Ubuntu通过/etc/init/dmesg.conf做到这一点。

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

由于内核恐慌经常(尽pipe不总是)中断用户进程(如系统日志)和磁盘I / O,所以必须使用内核日志loggingfunction(kdump,netconsole)来捕获内核恐慌。 另一个选项是通过串行控制台(可能是具有适当的IPMI / ILOM支持的串行控制台)或附加的gdb会话进行login。