因此,我在主机上安装了 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.conf
rsyslog
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