dmesg出力の変更を表示するには?

dmesg出力の変更を表示するには?

エラーメッセージを印刷するデバイスドライバを作成しています。リングバッファdmesg 出力。dmesg変更したら出力を見たいです。

どうすればいいですか?

答え1

比較的新しいdmesgバージョンフォローオプションを提供-w--follow)も同様に機能しますtail -f

したがって、次のコマンドを使用します。

$ dmesg -wH

-H--human色、相対時間などユーザーフレンドリーな機能を提供)

これらのオプションはFedora 19で利用可能です。

答え2

watchこのタイプの操作のために特別に設計されたコマンドを使用できます。

watch -n 0.1 "dmesg | tail -n $((LINES-6))"

部品$((LINES-6))は端子に適している必要があります。

答え3

実際に出力を直接監視することはできませんdmesg

ただし、モジュールはdmesgのリングバッファに直接印刷せず、代わりにカーネルロギング機能を使用します(それを介して表示されますdmesg)。合理的な(デフォルトなど)設定があると、これらのメッセージがログファイルsyslogにも表示される可能性が高くなります。kern.log

だからあなたはこれを行うことができます:

 tail -f /var/log/kern.log

答え4

組み込みシステムを使用する場合(例:忙しい箱これはこのようなシステムで一般的です。OpenWrt、機能は非常に制限されており、2〜3個のフラグのみをサポートしています。

イベントが変更されたときにdmesg出力を画面に連続的に印刷する迅速で汚れた方法が必要な場合は、単純なBashループがそのトリックを実行します。理想的ではありませんが、前述したように、BusyBox dmesgには多くの機能がありません。コマンドラインに次のように入力すると、同じ効果があることがわかりました。

$ while true; do dmesg -c ; sleep 1 ; done

Ctrl+を使用してループを終了できますC。 sleep 1 は CPU を不必要に消費するのを止めることで、 -c フラグは呼び出すたびにバッファをクリアし、毎秒繰り返される出力が表示されないようにします。

関連情報