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
コマンドを活用して、システムの動作を詳細に把握しましょう。