ホーム > パッケージ・システム管理 > dmesg

dmesg: カーネルリングバッファメッセージの確認

システム起動時にカーネルが出力するメッセージ(カーネルリングバッファ)を確認するコマンドです。ハードウェア検出、ドライバロード、システムエラー診断などに不可欠なツールです。

dmesgとは何か?

dmesgは「display message」または「driver message」の略で、Linuxカーネルのリングバッファに保存されたメッセージを出力します。システムが起動した時点から現在まで、ハードウェアがどのように認識され、ドライバがどのようにロードされたか、またはどのようなエラーが発生したかを時系列で表示します。

主要な機能と用途

dmesgは、システムの最も低いレベル(カーネル)で何が起こっているかを診断する際に使用されます。

  • ブートメッセージの確認: システム起動時に出力されるすべてのカーネルメッセージを表示します。
  • ハードウェア診断: 新しいハードウェア(USB、ディスクなど)が接続または削除されたときのログを確認します。
  • ドライバエラー: ドライバのロード失敗やカーネルレベルのエラー(Kernel Panic)の原因を追跡します。
  • リングバッファ: バッファサイズが固定されているため、古いログは新しいログによって上書きされます。

主要オプション (Shell)

dmesgは、他のコマンド(grep, less)とパイプ(|)で接続して使用されることが多いですが、それ自体にも便利なオプションがあります。

1. 出力形式と時間

2. フィルタリングとリアルタイム監視

3. バッファ/コンソール制御 (注意が必要)

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`dmesg` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用シナリオの例 (Shell)

dmesgはgrepと組み合わせて、必要な情報のみをフィルタリングする場合が多いです。

すべてのメッセージを表示 (ページング)

dmesg | less

最も基本的な使用方法。lessで快適にスクロールします。

新しいメッセージをリアルタイムで確認 (読みやすく)

dmesg -wH

-w (リアルタイム) と -H (人間が読みやすい時間) を組み合わせます。

USB関連メッセージのみフィルタリング

dmesg | grep -i usb

grepの-iオプションは大文字小文字を無視します。

ディスク(SATA/NVMe)関連メッセージのフィルタリング

dmesg | grep -iE 'sd[a-z]|nvme'

grep -E (拡張正規表現) で 'sd[a-z]' または 'nvme' を含むログを検索します。

エラー(Error)または警告(Warn)のみフィルタリング

dmesg -H -l err,warn

-l オプションでログレベルを指定します。

最新の10行のメッセージのみ表示

dmesg | tail -n 10

tailを組み合わせて最新のメッセージのみを素早く確認します。

facility/levelタグを含めて表示

dmesg -xT | less

-x オプションでfacility/levelをデコードし、理解を助けます。

ログをファイルに保存

dmesg -T > ~/dmesg-$(date +%F-%H%M).log

起動直後のdmesg全体を保存します。

インストール

dmesgはutil-linuxパッケージに含まれており、ほとんどのLinuxディストリビューションでデフォルトで提供されています。

デフォルトでインストール済み

別途インストールは不要です。もしない場合は、ディストリビューションの「util-linux」パッケージをインストールしてください。

ヒントと注意事項

dmesg vs journalctl

  • systemd環境: 最新のsystemdシステムでは、「journalctl -k」(カーネルログ)または「journalctl -b」(今回のブートログ)でdmesgレベルを超えるシステムログの統合表示が可能です。
  • 時間形式: デフォルトのdmesg出力の時間は[起動後の経過時間(秒)]です。実際の時間を確認するには「-H」または「-T」オプションを使用してください。
  • バッファの上書き: リングバッファの特性上、古いメッセージは消える可能性があります。起動初期のログ保存が必要な場合は、「journalctl -b 0」で確認するか、dmesg出力をファイルに保存してください。
  • 権限/セキュリティ: 一部のディストリビューションでは、「/proc/sys/kernel/dmesg_restrict=1」で一般ユーザーのdmesgアクセスを制限しています。この場合、「sudo dmesg」または「sudo journalctl -k」を使用してください。
  • ログのクリア(-c, -C): 「dmesg -c」と「-C」はデバッグには有用ですが、一度クリアすると復元できません。運用環境では慎重に使用してください。

関連するコマンド

機能的に類似しているか、よく一緒に使われるコマンドです。



同じカテゴリのコマンド