我在开发电脑上编译了一个内核模块,我想在 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