%20%E3%82%92%E5%8D%98%E4%B8%80%E3%81%AE%20.txt%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%80%E3%83%B3%E3%83%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82.png)
私は SATA ホスト デバイス通信を理解しようとしており、そのためにカーネル ドライバー コードに多くのデバッグ メッセージを入れました。現在、メッセージの量が非常に多いため、dmesg ログでデバイス列挙の初期メッセージを確認できません。同じ目的で、CONFIG_LOG_BUF_SHIFT(=21) 構成変数を変更して、dmesg がメッセージを取得するリング バッファー サイズを増やしましたが、それでも同じ問題に直面しています。
では、カーネルのブートからのすべての dmesg を特定のファイルに記録できる方法はありますか?
ご協力ありがとうございます。
答え1
以下を使用できます:
cat /var/log/dmesg > file.txt
そして次のように使用します:
head /var/log/dmesg
dmesg の最初の行を確認したい場合。
詳細は「man head」を参照してください。「>」記号は「cat」の出力を「file.txt」にリダイレクトします。
答え2
ログを stdout に出力する というコマンドがありますdmesg
。 stdout をテキスト ファイルにリダイレクトするだけです。
dmesg > /path/to/dmesg.txt
~/.profile
これを拡張することもできます。本当に便利なオプションは、ログイン時に dmesg の出力を追加する行をファイル (ホーム ディレクトリ内)に追加することです。次の行を追加するだけです。
dmesg >> /path/to/dmesg.txt
最初の数行 (0.000000 メッセージ) だけが必要な場合は、head
次のようにパイプすることができます。
stdout の場合:
dmesg | head
または、head
すでに保存されている .txt ファイルを使用します。
head /path/to/dmesg.txt
以上です。お役に立てれば幸いです。
編集:ちなみに、これには0.000000のメッセージが含まれています