実行中の2つのログファイルの出力をリアルタイムでマージする方法

実行中の2つのログファイルの出力をリアルタイムでマージする方法

私は2つの異なる方法を使用してLinux USBドライバがどのように機能するかを分析しました。

  1. 出力を確認してくださいusbmon。これは「オンライン」で送信される内容の16進ダンプビューです。
  2. カーネルドライバモジュールソースにステートメントを追加し、printk()それをカーネルに再ロードします。

cat /sys/kernel/debug/usb/usbmon/1uそれぞれとを通じてこれらのメソッドの出力を取得できますcat /var/log/kern.log

今私が望むのは、2つのファイルをリアルタイムでマージして、printk()ネットワーク経由で送信される16進行とインターリーブされたカーネルドライバに挿入されたログメッセージを表示できることです。たとえば、USBデータを送信することがわかっているドライバコードの先頭と末尾にステートメントを含めることができますprintk()usbmon

入力関数 sendImportantUSBData() // ドライバコードで printk()
0a ff bbbb ac 0993 b3332 // usbmon ログで関数を終了
sendImportantUSBData() // ドライバコードで printk()

tail単一ファイルの最後の数行を表示することが可能であることを知っています。また、タイミングの感度とマージされた行の順序の正確さへの影響に関する関連情報を見たことはありませんが、nツールがいくつかのマージを実行できることも知っています。時間に敏感なログを正確にマージしたり、マージのために比較的短い時間間隔を指定したりできるmultitail適切なツールはありますか?後者の場合、ドライバが。a)b)printk()usbmon

ベストアンサー1

どうですかtail -F /sys/kernel/debug/usb/usbmon/1u /var/log/kern.log?これにより、2つのファイルの出力を「追跡」し、各ファイルの出力を表示するときに短いヘッダーを印刷します。

おすすめ記事