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

組み込みシステムを使用している場合、ビジーボックスこれは次のようなシステムでは一般的ですオープンWrtただし、機能は非常に限られており、サポートされているフラグは 2 ~ 3 個のみです。

イベントの変化に応じて dmesg 出力を画面に継続的に表示する簡単な方法が必要な場合は、単純な Bash ループで十分です。これは理想的ではありませんが、前述したように BusyBox dmesg には多くの機能が欠けています。コマンド ラインに次のように入力すると、同じ効果が得られることがわかりました。

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

Ctrl+でループを終了できますC。 sleep 1 は CPU を不必要に圧迫しないようにするためのもので、 -c フラグは呼び出しごとにバッファをクリアするため、毎秒出力が繰り返されることはありません。

関連情報