内核信息记录在哪里?

Zep*_*hyr 2 kernel log

在我的开发计算机上,我编译了一个要在 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
Run Code Online (Sandbox Code Playgroud)

Rin*_*ind 7

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

我确实有一个 syslog 和一个 kern.log in /var/log/。我希望最后一个包含与内核相关的任何内容。

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


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

$ journalctl -f _TRANSPORT=kernel
Run Code Online (Sandbox Code Playgroud)

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

其他示例(来自链接):

没有参数,所有收集的日志都显示为未经过滤:

journalctl
Run Code Online (Sandbox Code Playgroud)

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

journalctl _SYSTEMD_UNIT=avahi-daemon.service

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

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097
Run Code Online (Sandbox Code Playgroud)

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

journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service
Run Code Online (Sandbox Code Playgroud)

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

 journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service
Run Code Online (Sandbox Code Playgroud)

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

journalctl /usr/bin/dbus-daemon
Run Code Online (Sandbox Code Playgroud)

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

journalctl -k -b -1
Run Code Online (Sandbox Code Playgroud)

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

journalctl -f -u apache
Run Code Online (Sandbox Code Playgroud)