web-dev-qa-db-ja.com

カーネルリングバッファはrsyslogと比較してどこにありますか?

rsyslogは、カーネルリングバッファの上にある単なる抽象化レイヤーですか?または、カーネルリングバッファはそれ自体のエンティティであり、rsyslogsの相互作用は他の「アプリケーション」の相互作用と似ていますか?

9
user26053

さまざまなドキュメント(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を介して他のユーザーランドプロセスからメッセージをソースするユーザーランドアプリケーションです。

6
goldilocks