Linuxのシステム管理において、起動時のイベントやカーネルのログを確認することは、トラブルシューティングやパフォーマンスの監視において重要です。そのための便利なコマンドの一つが dmesg
です。本記事では、dmesg
コマンドの基本的な使い方から応用的な活用方法まで詳しく解説します。
dmesg コマンドとは?
dmesg
(diagnostic messageの略)は、Linuxカーネルのログバッファの内容を表示するコマンドです。このコマンドを使用すると、システムの起動プロセス、ハードウェアの検出、ドライバのロード状況、エラーなどを確認できます。
特に、以下のような場合に役立ちます。
- システムの起動時の問題の特定
- ハードウェアの認識状況の確認
- カーネル関連のエラーメッセージの解析
- デバイス接続時のログ確認
dmesg コマンドの基本的な使い方
1. 全てのカーネルログを表示
dmesg
を単体で実行すると、カーネルリングバッファのすべてのメッセージが表示されます。
$ dmesg
表示されるログには、カーネルが出力したメッセージが含まれています。ただし、そのままでは情報量が多いため、適切にフィルタリングする必要があります。
2. less と組み合わせてページネーション表示
ログが長い場合は、less
コマンドと組み合わせるとスクロールしながら閲覧できます。
$ dmesg | less
3. 特定のキーワードを検索
特定の情報を探す場合、grep
を使うと便利です。
例えば、ネットワーク関連のメッセージを検索するには以下のように実行します。
$ dmesg | grep -i network
USBデバイスの認識状況を確認する場合は、次のようにします。
$ dmesg | grep -i usb
dmesg の出力を読みやすくするオプション
1. タイムスタンプを付ける
デフォルトの dmesg
出力では時間情報が分かりにくいため、-T
オプションを使うことで、人間が読みやすい形式のタイムスタンプを表示できます。
$ dmesg -T
このオプションを使うと、出力が次のようになります。
[Sat Mar 2 10:15:03 2025] ACPI: Core revision 20240212
[Sat Mar 2 10:15:03 2025] Linux version 5.15.0-76-generic (buildd@lgw01-amd64-055) (gcc (Ubuntu 9.4.0-1ubuntu1) 9.4.0) ...
2. ログのレベルごとにフィルタリング
dmesg
のログには異なるレベルのメッセージが含まれています。特定の種類のメッセージのみを表示する場合、-l
オプションを使用します。
例えば、エラーメッセージのみを表示するには以下のように実行します。
$ dmesg -l err
利用できるレベルは以下の通りです。
- emerg(緊急)
- alert(警告)
- crit(致命的なエラー)
- err(エラー)
- warn(警告)
- notice(通知)
- info(情報)
- debug(デバッグ情報)
dmesg のログを永続的に保存する
dmesg
のログはシステムを再起動するとリセットされてしまいます。必要な情報を保持するには、ログファイルに保存することが推奨されます。
例えば、次のようにして /var/log/dmesg.log
にログを保存できます。
$ sudo dmesg > /var/log/dmesg.log
また、journalctl
コマンドを使用すると、dmesg
のログを含めたカーネルメッセージを参照できます。
$ journalctl -k
dmesg を活用したトラブルシューティング
1. システム起動時のエラーを調査
システムが正常に起動しない場合、dmesg
を使用してエラーメッセージを特定できます。
$ dmesg -T | grep -i error
2. ハードウェアの認識状況を確認
新しいデバイスを接続した際に、正しく認識されているかを確認できます。
$ dmesg -T | grep -i usb
3. ネットワーク接続のトラブルシューティング
ネットワークインターフェースの初期化やエラーメッセージを確認できます。
$ dmesg -T | grep -i eth
まとめ
dmesg
コマンドは、Linuxカーネルのログを確認し、システムの状態やトラブルシューティングに役立つ強力なツールです。本記事では基本的な使い方から、オプションを活用した効率的なログの検索、トラブルシューティングの方法まで紹介しました。システム管理を行う際は、ぜひ dmesg
コマンドを活用して、システムの動作を詳細に把握しましょう。