「dmesg」コマンドで ログ解析
Linuxを使っていると「システムがなぜ動かない?」「デバイスが反応しない?」といった問題に直面することがよくあります。そんなときに役立つのが、Linuxカーネルのメッセージを確認できるdmesgコマンドです。
dmesgとは?
dmesgは、カーネル(Linuxシステムの「心臓部」)が発するメッセージを確認するコマンドです。カーネルは、システムの起動中や動作中に、ハードウェアやドライバの状態、エラーなどの情報を「リングバッファ」というメモリ領域に記録します。dmesgは、このリングバッファを読み取って、メッセージを表示します。
なぜdmesgが必要?
システムの動きを覗くのにdmesgは最適です。たとえば、次のようなケースに役立ちます:
システム起動時のエラー確認
例:起動時にデバイスが認識されているか確認
ハードウェアの問題診断
例:USBメモリが正常に接続されているかチェック
ネットワークのトラブルシューティング
例:ネットワークインターフェースの問題を特定
カーネルエラーの解析
例:カーネルパニックやメモリエラーの原因を追究
基本の使い方
1. シンプルにメッセージを確認
カーネルメッセージ全体を確認するには、以下のコマンドを実行します。
dmesg
これは、システムの裏側でどんな「会話」が交わされているかを覗き見る感じです。たとえば、システムの起動ログやハードウェアの認識情報がズラッと表示されます。
2. リアルタイムで確認
システムに新しいデバイスを接続したり、何らかの操作をしたときに、カーネルの反応をリアルタイムで確認できます。
dmesg -w
たとえば、USBメモリを挿した瞬間に「USBデバイスが接続されました」というログが出るのを目で追えます。
3. 時間表示を見やすく
通常のdmesgでは、タイムスタンプがカーネルの起動からの秒数で表示されます。それを人間が理解しやすい日時形式にするには、-Tオプションを使います。
dmesg -T
これで、「イベントがいつ起きたか」がすぐにわかります。
4. 特定のメッセージを検索
grepを使って、興味のあるメッセージだけをフィルタリングできます。
例:USBデバイス関連のメッセージのみ確認
dmesg | grep usb
5. メッセージの重要度でフィルタ
dmesgはメッセージの重要度(エラーレベル)でフィルタリングできます。
エラーのみ表示: dmesg -l err
警告以上を表示: dmesg -l warn
使えるシナリオと例え話
1. 起動時の問題確認 - 「探偵の捜査メモ」
システムの起動プロセスは探偵の捜査と似ています。dmesgは、「起動中にカーネルが調査してメモした内容」を全部見せてくれるものです。
例: 起動時に何がうまくいって、何が失敗したか調べる
dmesg | grep -i fail
2. ハードウェアの診断 - 「荷物チェックインカウンター」
新しいデバイスを接続すると、カーネルは「お、荷物がきた!」と反応します。dmesgは、接続された荷物(デバイス)がちゃんと受付されたかを確認するツールです。
例: USBデバイスの接続ログを見る
dmesg | grep usb
3. カーネルエラー解析 - 「警報装置のログ」
カーネルが異常を感知すると警報を鳴らします。その警報ログがdmesgです。これを見ると、「なぜエラーが起きたのか」を特定できます。
例: ファイルシステムのエラーを調査
dmesg | grep EXT4
注意点
セキュリティ制限: 最近のLinuxでは、セキュリティ強化のため、一般ユーザーがdmesgを実行できない場合があります。この場合、sudoを付けて実行してください。
sudo dmesg
メッセージ量が多い: カーネルメッセージは膨大になることがあるので、lessやgrepで必要な情報だけを絞り込むと便利です。
リアルタイム監視でのフィルタリング: -wオプションでリアルタイム表示する場合も、grepと組み合わせてフィルタリングが可能です。
dmesg -w | grep usb
まとめ
dmesgは、システムの裏側で起きている出来事を把握するための「カーネルメッセージビューア」です。システム管理者にとってはなくてはならないツールで、特にハードウェアの問題やエラー解析に役立ちます。
次回、システムに不調があったときには、「探偵になった気持ち」でdmesgを使ってみてください。カーネルが語るメッセージを読み解けば、問題の真相にたどり着けるはずです!