Linuxのシステム管理において、起動時のイベントやカーネルのログを確認することは、トラブルシューティングやパフォーマンスの監視において重要です。そのための便利なコマンドの一つが dmesg です。本記事では、dmesg コマンドの基本的な使い方から応用的な活用方法まで詳しく解説します。
dmesg(diagnostic messageの略)は、Linuxカーネルのログバッファの内容を表示するコマンドです。このコマンドを使用すると、システムの起動プロセス、ハードウェアの検出、ドライバのロード状況、エラーなどを確認できます。
特に、以下のような場合に役立ちます。
dmesg を単体で実行すると、カーネルリングバッファのすべてのメッセージが表示されます。
$ dmesg 表示されるログには、カーネルが出力したメッセージが含まれています。ただし、そのままでは情報量が多いため、適切にフィルタリングする必要があります。
ログが長い場合は、less コマンドと組み合わせるとスクロールしながら閲覧できます。
$ dmesg | less 特定の情報を探す場合、grep を使うと便利です。
例えば、ネットワーク関連のメッセージを検索するには以下のように実行します。
$ dmesg | grep -i network USBデバイスの認識状況を確認する場合は、次のようにします。
$ dmesg | grep -i usb デフォルトの 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) ... dmesg のログには異なるレベルのメッセージが含まれています。特定の種類のメッセージのみを表示する場合、-l オプションを使用します。
例えば、エラーメッセージのみを表示するには以下のように実行します。
$ dmesg -l err 利用できるレベルは以下の通りです。
dmesg のログはシステムを再起動するとリセットされてしまいます。必要な情報を保持するには、ログファイルに保存することが推奨されます。
例えば、次のようにして /var/log/dmesg.log にログを保存できます。
$ sudo dmesg > /var/log/dmesg.log また、journalctl コマンドを使用すると、dmesg のログを含めたカーネルメッセージを参照できます。
$ journalctl -k システムが正常に起動しない場合、dmesg を使用してエラーメッセージを特定できます。
$ dmesg -T | grep -i error 新しいデバイスを接続した際に、正しく認識されているかを確認できます。
$ dmesg -T | grep -i usb ネットワークインターフェースの初期化やエラーメッセージを確認できます。
$ dmesg -T | grep -i eth dmesg コマンドは、Linuxカーネルのログを確認し、システムの状態やトラブルシューティングに役立つ強力なツールです。本記事では基本的な使い方から、オプションを活用した効率的なログの検索、トラブルシューティングの方法まで紹介しました。システム管理を行う際は、ぜひ dmesg コマンドを活用して、システムの動作を詳細に把握しましょう。