rsyslog
は、カーネルリングバッファの上にある単なる抽象化レイヤーですか?または、カーネルリングバッファはそれ自体のエンティティであり、rsyslog
sの相互作用は他の「アプリケーション」の相互作用と似ていますか?
さまざまなドキュメント(man dmesg
を含む)で「カーネルリングバッファ」と呼ばれていますが、「リングバッファ」は一般的な用語であり、私は信じているため、カーネルログバッファと呼ぶ方がよい場合があります。カーネルは、まったく関係のないさまざまな目的でリングバッファも使用します。 「printkバッファ」は、カーネル空間関数が書き込みに使用された後も適切です。
とにかく、それはカーネル空間に存在し、読み取りインターフェースは/proc/kmsg
を介して提供され、読み取り/書き込みインターフェースは/dev/kmsg
を介して提供されます。したがって、ルートとして移動する場合:
echo "Hello Kernel!" > /dev/ksmg
次にcat /dev/ksmg
を実行すると表示されます(ただし、ログにこれが表示されることはおそらくありません。考えられる理由については、以下のMatthew Phippsのコメントを参照してください)。これは生の出力であり、dmesg
またはログファイルに表示されるものとまったく同じようには見えません。カーネルソースで提供されるこれについては、少し ドキュメントのビット があります。 (r)syslogが実行されている場合は、/proc/kmsg
(/dev/ksmg
と同じではありません)から読み取ることをお勧めします。
Rsyslogは、Linuxで一般的に使用されている多くの syslog 実装の1つです。これらは、/proc/ksmg
からカーネルメッセージを、ソケット/dev/log
を介して他のユーザーランドプロセスからメッセージをソースするユーザーランドアプリケーションです。