printkを選択的に有効にする方法は?

printkを選択的に有効にする方法は?

カーネルからいくつかの文を印刷したいのですが、すべてではありません。

では、printkを選択的に使用できますか?

オプションとは、特定の場所でのみ印刷を有効にし、他の場所では無効にしたいことを意味します。

これでグローバルにのみ有効にするか(カーネル設定でprintkを有効にする)、無効にすることができます。

ベストアンサー1

(編集:追加情報もここにあります。kernel.printk 値の説明)

sysctlコマンド/システムを使用して、必要に応じてカーネルprintk設定を変更できます。

sysctl -w kernel.printk="4 4 1 7"

printk設定を「デフォルト」値に設定しますが、

sysctl -w kernel.printk="3 4 1 3"

低レベルのメッセージがコンソールに出力されるのを防ぎます。

sysctl kernel.printk

現在の設定が表示されます。

Linuxドキュメント(カーネル文書):

印刷:

printk の 4 つの値は、console_loglevel、default_message_loglevel、最小_console_loglevel、および default_console_loglevel を表します。

この値は、エラーメッセージを印刷または記録するときのprintk()の動作に影響します。さまざまなログレベルの詳細については、「man 2 syslog」を参照してください。

  • console_loglevel:これより優先順位の高いメッセージはコンソールに印刷されます。
  • default_message_loglevel:明示的な優先順位のないメッセージはこの優先順位で印刷されます。
  • minimum_console_loglevel:console_loglevelが設定できる最小(最高)値
  • default_console_loglevel: console_loglevelのデフォルト値

sysctlを使用して新しい値を書き込むには(-w)通常、rootまたはsudo権限が必要です。また、root(ish)が必要な/proc/sys/kernel/printkに値をエコーすることもできます。


編集2:

私のMonkeyデバッグヘルパーは、便利なカーネルprintkメッセージを取得する別の方法があることを思い出しました。

syslog/rsyslog/whateverlogデーモンは、カーネル出力を特定のファイル、パイプ、またはソケットに送信して、選択したプログラムで読み取り、解析、保存、または削除するように要求できます。

私のrsyslog.confがすべて表示されます。タイトなライン。 *レベルメッセージは次に送信されます。/var/log/kern.log、簡単にファイルを聞き、必要なメッセージを得ることができます。

独自の定義を下すこともできます。施設入力してrsyslogに特別な場所に送信してください。選択的に送信することさえカーネル警告またはカーネルしきい値必要ならどこかにメッセージを送ってください。

rsyslogとsyslogの構成設定は異なり、いつものようにマニュアルページが役立ちます。

おすすめ記事