The*_*eer 3 rsyslog linux-kernel dmesg
当/dev/kmsg
在尾随消息的同时写入消息时/proc/kmsg
,消息会非常随机地出现,而 in 永远不会出现在/var/log/kern.log
.
但是,dmesg
正确获取所有消息。
例子
# Terminal 1
sudo tail -f /proc/kmsg
# Terminal 2
tail -f /var/log/kern.log
# Terminal 3
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
sudo sh -c 'echo "<1> Kernel log message" > /dev/kmsg'
Run Code Online (Sandbox Code Playgroud)
结果:
# Terminal 1
# The message is shown at irregular intervals without a clear pattern
sudo tail -f /proc/kmsg
<9>[37102.185491] Kernel log message
# Terminal 2
# No message is ever shown
tail -f /var/log/kern.log
# Terminal 4
# Everything is always here
dmesg
[37101.556366] Kernel log message
[37102.185491] Kernel log message
[37103.042422] Kernel log message
Run Code Online (Sandbox Code Playgroud)
插入 USB 记忆棒时,数据会在来自/proc/kmsg
和 的输出之间随机拆分/var/log/kern.log
。dmesg
再次显示所有消息。
dmesg
与其他方法不同的方式来做?/dev/kmsg
?为什么我的尝试没有被阻止device or resource busy
?/dev/kmsg
即使它们偶尔会到达proc/kmsg
?/proc/kmsg
不可共享的日志当中的读者,如果有多个读者仅其中一人将收到任何给定的日志信息。 /dev/kmsg
可共享在多个日志的读者,提供整个日志流(通过缓慢读者步伐欠载)到每个读取器。