
私はエラーメッセージを出力するデバイスドライバを書いていますリングバッファ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 フラグは呼び出しごとにバッファをクリアするため、毎秒出力が繰り返されることはありません。