/dev/kmsg
尾にメッセージを書き込むと、/proc/kmsg
メッセージは非常にランダムに表示されます/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'
結果:
# 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
USBスティックを挿入すると、データが/proc/kmsg
出力間にランダムに分配されます/var/log/kern.log
。dmesg
すべてのメッセージを再表示します。
dmesg
他の方法とどう違うの?- 他のプロセスが受信できるようにしてrsyslogのカーネルロギングを中止できる
/dev/kmsg
理由私の試みがブロックされていないのはなぜですかdevice or resource busy
? - rsyslogメッセージが
/dev/kmsg
時々到着してもrsyslogに送信されないのはなぜですかproc/kmsg
?
答え1
/proc/kmsg
ログリーダーは互いに共有できず、複数のリーダーがある場合は、そのリーダーの1つだけが特定のログメッセージを受け取ります。 /dev/kmsg
複数のログリーダー間で共有することで、各リーダーに完全なログストリームを提供できます(遅いリーダーではパフォーマンスが低下します)。