回答:
比較的最近のdmesg
バージョンでは、に類似して動作するフォローオプション(-w
、--follow
)が提供されtail -f
ます。
したがって、次のコマンドを使用します。
$ dmesg -wH
(-H
、--human
色、相対時間などの使いやすい機能を有効にします)
これらのオプションは、例えばFedora 19で利用可能です。
-H
が、それ以外スポットオン
-w
Utopic(14.10)以降のUbuntuのすべてのバージョンで動作するはずです。(launchpad.net/ubuntu/+source/util-linux/+publishinghistoryは早期Utopicパッケージは2.20のためだったが、それがリリースされた時点で2.25に達し示唆している。)
watch
このようなことを正確に意図したコマンドを使用できます
watch -n 0.1 "dmesg | tail -n $((LINES-6))"
$((LINES-6))
部分は、それがあなたの端末にうまく適合させる必要があります。
watch
。したがって、の呼び出し間で実際には変化しませんdmesg
。端末の状態を照会するラッパーを使用する必要があります。
watch
ため、watchは、そこに変数式を指定してコマンドを実行します。この式は、起動するシェルによって展開されます。毎回。それを試して、それは動作します。
watch
ますpopen()
。つまり、別のシェルが生成され、環境変数が提供されます(したがって、実行ごとに更新されます)。素敵な発見。
の出力をdmesg
直接監視することはできません。
ただし、モジュールがdmesgのリングバッファに直接印刷されず、代わりにカーネルロギング機能を使用する可能性が高くなります(カーネルロギング機能はで表示されますdmesg
)。あなたがあればsyslog
、いくつかのまともな(例えば、デフォルト)設定があり、これらのメッセージは、最も可能性もに表示されますkern.log
ログファイル。
次のようなことができます:
tail -f /var/log/kern.log
/var/log/kern.log
Linux特有のものです。OpenBSD(および場合によってはその他)の場合、dmesgのものは/ var / log / messagesに記録されます。確かに、他にもいくつかのものがあります。
dmesg
カーネルのログメッセージを取得するために使用します。
カーネル自体は、リングバッファ、つまりメモリ内にログインします。これでdmesg
、そのリングバッファの内容が出力されるだけになりました。実行dmesg -c
すると、その後リングバッファも削除されます。
したがって、動作しないのと同じようなものwhile true; do dmesg -c; sleep 1; done
を持つようなことができますdmesg|tail
。ただし、これによりリングバッファが削除されるため、ルートパワーが必要になります。
もう1つの方法は/proc/kmsg
、リングバッファを表示できるファイルです。できますtail -f /proc/kmsg
が、これは1つのプロセスにのみ許可されており、通常はこれがロギングデーモンです。-それは、メッセージを読み取り、読み取り可能な実際のファイル(通常は/ var / logにある)に書き込むことです。すべてのメッセージを単一のファイルに出力するか、異なる部分を異なるファイルに出力するように構成できます。(ただし、構成はシステムのログデーモンに依存します。)
したがって/var/log
、ニーズに合ったファイルがあるかどうかを確認し、それ以外の場合はロギングデーモンを設定してください。
組み込みシステムを使用している場合、OpenWRTなどのシステムで一般的なbusyboxの機能は非常に制限されており、2〜3個のフラグのみがサポートされています。
イベントの変化に応じてdmesg出力を画面上に継続的にすばやく印刷する方法が必要な場合は、単純なbashループが正常に機能します。理想的ではありませんが、BusyBoxで述べたように、dmesgには多くの機能がありません。コマンドラインに入力すると、次の効果が同じであることがわかりました。
$ while true; do dmesg -c ; sleep 1 ; done
Ctrl-Cでループを終了できます。sleep1はCPUを不必要に破壊するのを止めることです。