web-dev-qa-db-ja.com

/ proc / kmsgと/ dev / kmsgの違いは何ですか?

私はjournaldrsyslogについて学習していて、読んでいるときにrsyslog/dev/kmsgから読み取り、journald/dev/kmsg/proc/ksmgの両方から読み取れることがわかりました。

これらはどちらもカーネルログであることはわかっていますが、/proc/kmsg/dev/kmsgの違いは何ですか? 1つはプロセスのように見え、もう1つはデバイスのように見えるのはなぜですか?

9
Wimateeka

_/proc/kmsg_は、カーネルログバッファーのルートのみ、読み取り専用、消費ビューを提供します。これは、_SYSLOG_ACTION_READ_アクションで syslog(2) を呼び出すのと同じです。 the proc manpage で述べたように、

このファイルを読み取るには、プロセスにスーパーユーザー特権が必要であり、このファイルを読み取るプロセスは1つだけです。 syslog(2) システムコール機能を使用してカーネルメッセージをログに記録するsyslogプロセスが実行されている場合、このファイルを読み取ることはできません。

_/dev/kmsg_は、同じカーネルログバッファーへのアクセスを提供しますが、より簡単に使用できます。読み取りはオープンごとに追跡されるため、複数のプロセスが並行して読み取ることができ、エントリが読み取られてもバッファから削除されません。 _/dev/kmsg_は、ログバッファーへのwriteアクセスも提供するため、ログバッファーにエントリを追加するために使用できます。詳細は the _/dev/kmsg_ documentation を参照してください。

両方が存在する理由と、1つが_/proc_(プロセス関連ではありません)およびdevにある理由については、_/proc/kmsg_はカーネル内部の古い便利な「エクスポート」です。および_/dev/kmsg_は より最近の追加 であり、ログバッファーへの使用可能なインターフェイスとして設計されています。

18
Stephen Kitt