内核信息记录在哪里?

内核信息记录在哪里?

我在开发电脑上编译了一个内核模块,我想在 Ubuntu 系统上使用。目前这是一个简单的测试模块,只是 printk 一条消息。

在我的开发计算机上,我可以测试它是否有效cat /var/log/messages

在我的 Ubuntu 电脑上,我insmod编辑了 .ko 并尝试了这个,但没有/var/log/messages。谷歌搜索告诉我它已被重命名为/var/log/syslog,但看起来/var/log似乎也不存在。为什么我没有日志?

我看到的情况如下:

Xorg.0.log
Xorg.0.log.old
apt
dmesg
dmesg.0
dmesg.1.gz
dmesg.2.gz
dmesg.3.gz
dmesg.4.gz
dpkg.log
dpkg.lob.1
dpkg.log.2.gz
lastlog
lightdm
pm-powersave.log
pm-powersave.log.1
pm-powersave.log.2.gz
pm-powersave.log.3.gz
pm-powersave.log.4.gz
samba
udev
unattended-upgrades

答案1

/var/log/messages在 Ubuntu 中不使用(在 Natty 附近被删除)。我们使用/var/log/syslog它。当时记录到“消息”的所有内容也记录到“系统日志”中,因此我们删除了其中一个。

我确实有一个 syslog 和一个 kern.log /var/log/。我希望最后一个可以保存与内核相关的任何内容。

有一个更好的方法:journald守护进程拥有所有已记录的内容。


您可以使用以下命令列出内核消息:

$ journalctl -f _TRANSPORT=kernel

这应该会显示与内核相关的任何内容,如果需要,你可以 grep 结果。但是有很多选项优化您的结果(请参阅链接或journalctl --help)。

其他示例(来自链接):

如果没有参数,则所有收集的日志均不经过滤地显示:

journalctl

指定一个匹配项后,将显示具有与表达式匹配的字段的所有条目:

journalctl _SYSTEMD_UNIT=avahi-daemon.service

如果匹配两个不同的字段,则只显示同时匹配两个表达式的条目:

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097

如果两个匹配引用同一个字段,则显示与任一表达式匹配的所有条目:

journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

如果使用分隔符“+”,则两个表达式可以以逻辑或的形式组合在一起。以下将显示来自 PID 为 28097 的 Avahi 服务进程的所有消息以及来自 D-Bus 服务(来自其任何进程)的所有消息:

 journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service

显示 D-Bus 可执行文件生成的所有日志:

journalctl /usr/bin/dbus-daemon

显示上次启动的所有内核日志:

journalctl -k -b -1

显示系统服务 apache.service 的实时日志显示:

journalctl -f -u apache

相关内容