Linux / コマンド / dmesg - カーネルメッセージとブートログの確認

dmesgはカーネルリングバッファに記録されたメッセージを読みます。起動中のハードウェア認識、ドライバー、ファイルシステム、またはカーネル警告を調査する際に役立ちます。

カーネルリングバッファは、カーネルのメッセージを一定容量で保持する領域です。古いメッセージは上書きされることがあります。出力には異なる重要度と時刻の記録が混在します。-Tは読みやすい日時に変換しますが、特にサスペンド・復帰をまたぐ記録では不正確になる場合があります。時刻や過去の起動を調べる際は、journalctlによる起動別のログ確認も併用してください。

基本的な文法

dmesg [オプション]

インストールされている実装とオプションは、配布版によって異なる場合があります。man dmesgで現在のシステムの説明を確認してください。

使用例

カーネルメッセージの確認

最新の記録まで出力されるため、画面が長くなる場合はページャーを使用します。

dmesg | less

警告とエラーのみ表示

この指定はerrとwarnの2レベルだけを抽出します。critなど、さらに重大なレベルまで自動的に含む指定ではありません。

dmesg --level=err,warn

新しいメッセージを追跡

--followは現在のメッセージを表示した後、新しいメッセージを待ち続けます。既存の記録を省いて新着だけを見るには、対応している環境で--follow-newを使います。追跡はCtrl+Cで終了します。

dmesg --follow

カーネルメッセージと相対時刻の読み取り

dmesgの基本時間表示は通常、起動後の経過時間に基づきます。数字の後にハードウェア・ドライバー・ファイルシステム関連のメッセージが続きます。

dmesg --level=err,warn | tail -n 3

例の形式(実際のメッセージはシステムによって異なります):

[   12.345678] device: warning message

出力が空の場合、現在のリングバッファにそのレベルのメッセージがない可能性があり、権限制限により読み取れない場合はエラーが表示されます。リングバッファはサイズに制限があるため古い記録が消えることがあるので、以前の起動時のイベントはjournalctl -k -b -1のようにジャーナル保存の有無も一緒に確認してください。dmesg -cはバッファを消去するため、単純な確認には使用しません。

主なオプションと形式

オプション・形式 説明
--level=リスト 指定した優先度のメッセージのみ表示します。
-T 人間が読みやすい時刻を表示します。
-H 人間が読みやすい出力とページャを使用します。
-w 新しいメッセージを引き続き待ちます。
-k カーネルメッセージのみを表示します。

使用する際の注意点

一部のディストリビューションでは、非管理者によるカーネルログの読み取りが制限されているため、権限エラーが出た場合はポリシーを確認してください。dmesg -cや--clearはバッファを消去するため、単なる参照には使用しません。メッセージがないからといって問題がないというわけではありません。前回の起動記録はジャーナル保持設定に応じてjournalctl -k -b -1で確認できます。

よくある質問

dmesgとjournalctl -kは同じですか?

どちらもカーネルメッセージを確認できますが、dmesgはカーネルリングバッファを読み取り、journalctl -kは収集・保持されたジャーナルのカーネル項目を参照します。

公式ドキュメント

オプションの正確な動作や実装ごとの違いは、dmesg関連公式ドキュメントで確認できます。