dmesgコマンドの使い方を完全ガイド!Linuxのカーネルログを確認する基本
生徒
「Linux(リナックス)を使っているときに、USBメモリが認識されなかったり、ネットワークの調子が悪かったりすることがあります。そういうとき、内部で何が起きているか調べる方法はありますか?」
先生
「そんなときは、dmesg(ディーメッセージ)コマンドを使ってみましょう。これはカーネル(核となるプログラム)が出力するログを表示するための命令です。」
生徒
「カーネルログ(カーネルログ)ですか。なんだか難しそうですね。初心者でも読み解けるでしょうか?」
先生
「最初は情報量が多くて驚くかもしれませんが、特定のキーワードで絞り込む方法を覚えれば大丈夫です。システムの不具合調査には欠かせない知識ですよ。一緒に学んでいきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. dmesgコマンドとは?
dmesg(ディーメッセージ)コマンドは、Linuxカーネル(Linux Kernel)が動作中に出力するメッセージを表示するためのコマンドです。Linuxカーネルとは、コンピュータのハードウェア(CPU、メモリ、ディスクなど)とソフトウェア(アプリなど)を仲介する、OSの心臓部にあたる最も重要なプログラムのことです。
読み方は「ディーメッセージ」や「デメッセージ」と呼ばれます。このコマンドを実行することで、コンピュータの起動時にどのようなデバイスが認識されたのか、あるいはシステム実行中にどのようなエラーが発生したのかを詳しく知ることができます。Windowsでいうところの「イベントビューアー」に近い役割を果たしますが、よりハードウェアやシステムに近い低レイヤー(低い階層)の情報を扱います。
2. カーネルログ(Kernel Log)の役割と重要性
カーネルログ(読み方はカーネルログ)は、システム内で発生した出来事の記録です。特に、CPU(シーピーユー:中央演算処理装置)や主記憶装置(シュキオクソウチ:メモリ)といったハードウェアの状態、ドライバの読み込み状況などが記録されます。普段私たちが使っているWebブラウザやエディタのログとは異なり、コンピュータそのものの健康状態を示す日記のようなものです。
システムが急に重くなったり、周辺機器が動かなくなったりした際、このログを確認することで「どこで問題が起きているか」を特定できます。サーバー運用やトラブルシューティングにおいて、真っ先に確認すべき情報源の一つです。
3. dmesgコマンドの基本的な使い方
最もシンプルな使い方は、ターミナルでそのままコマンドを入力することです。オプションなしで実行すると、起動時からの膨大なログが一気に表示されます。一般ユーザー権限でも実行可能ですが、システムの環境によっては管理者権限が必要な場合もあります。まずは一般ユーザーで試してみましょう。
dmesg
[ 0.000000] Linux version 5.15.0-generic ...
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz ...
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001 ...
[ 0.123456] usbcore: registered new interface driver usbfs
このように、左側に経過秒数が表示され、その右側にメッセージが表示されます。この表示は非常に長くなるため、次のセクションで紹介する方法を使って読みやすくするのが一般的です。
4. ログを1画面ずつ読みやすく表示する方法
そのままdmesgを実行するとログが流れていってしまうため、less(レス)コマンドと組み合わせて、1画面ずつスクロールできるようにすると便利です。これを「パイプ」という仕組みを使って行います。
dmesg | less
[ 0.000000] Linux version 5.15.0-generic ...
(ここでスペースキーを押すと次のページ、qキーで終了できます)
この方法を使えば、膨大な行数があっても自分のペースでじっくりと内容を確認することができます。上に戻って確認したいときも、矢印キーで自由に操作可能です。
5. 特定のキーワードでエラーを探す方法
ログの中から「error(エラー)」や「failed(失敗)」といった単語を探すのがトラブルシューティングの近道です。これにはgrep(グレップ)という検索用コマンドを組み合わせます。英字の大文字と小文字を区別しない「-i」オプションを使うのがコツです。
dmesg | grep -i error
[ 5.678901] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[ 12.345678] usb 1-1: device descriptor read/64, error -110
このように実行すると、エラーに関連する行だけが抜き出されます。ハードディスク(HDD)の読み書き失敗や、USB機器の接続ミスなどがすぐに見つかります。
6. 最新のログをリアルタイムで監視する
新しくUSBデバイスを差し込んだときや、ネットワーク設定を変更した直後に何が起きているか知りたい場合は、-wオプション(または--follow)を使います。これを実行すると、コマンドが終了せずに待機状態となり、新しいログが出るたびに画面に表示されます。
dmesg -w
[ 60.123456] eth0: link up, 1000Mbps, full-duplex
[ 75.654321] usb 2-1: new high-speed USB device number 3 ...
この状態でUSBマウスなどを抜き差ししてみると、リアルタイムでメッセージが追加されるのがわかります。確認を終えるときは、キーボードの「Ctrl + C」を押して停止させてください。
7. メッセージの種類(レベル)を指定して表示する
カーネルログには「緊急(emerg)」「警告(warn)」「情報(info)」などのレベル(重要度)が設定されています。-l(レベル)オプションを使うと、特定の重要度以上のメッセージだけに絞り込めます。例えば、警告以上の重要なメッセージだけを見たい場合は次のようにします。
dmesg -l warn,err,crit,alert,emerg
[ 2.345678] atkbd serio0: Spurious ACK on isa0060/serio0.
[ 8.901234] Energy Reporting measures system-wide energy...
システム管理者としてサーバーを保守(ホシュ)する場合、このように情報の取捨選択を行うことで、重要なサインを見逃さないようにします。
8. ログの時間を人間が読みやすい形式に変える
標準のdmesg出力では、左側の時間は「OSが起動してからの秒数」になっています。これでは「いつ起きたのか」が分かりにくいため、-T(または--ctime)オプションを使って、人間が読みやすい「日付と時刻」の形式に変換します。
dmesg -T
[Mon Mar 23 19:30:01 2026] Linux version 5.15.0-generic ...
[Mon Mar 23 19:35:12 2026] usb 1-1: new USB device found ...
これを使えば、「昨日の夜にエラーが出ていたかどうか」といった確認が非常にスムーズになります。ただし、スリープ(一時停止)を挟んだ場合など、環境によっては時刻がわずかにズレることがあるので注意してください。
9. リングバッファの仕組みとクリア方法
dmesgが読み取っている場所は「リングバッファ」と呼ばれるメモリ上の領域です。これは、古いメッセージを新しいメッセージが上書きしていく仕組みになっています。そのため、非常に古いログは消えてしまうことがありますが、最新の状況を把握するには十分な容量が確保されています。
もし、検証のために一度ログをきれいに掃除(クリア)したい場合は、-C(大文字)オプションを使用します。これには管理者権限(root権限)が必要です。実行すると、これまでの記録が消去され、それ以降に発生したイベントだけが表示されるようになります。
dmesg -C
(画面には何も表示されませんが、これまでのログがクリアされます)
10. 初心者がdmesgで注目すべきポイント
最後に、初心者がdmesgを使う際のアドバイスです。全ての行を理解しようとする必要はありません。まずは以下の単語が含まれている行がないか眺めてみてください。
- failed / failure:何らかの処理が失敗したことを示します。
- denied:権限不足などで拒絶されたことを示します。
- Out of memory (OOM):メモリが足りなくなった際に出る非常に重要な警告です。
- Segmentation fault:プログラムが不正なメモリ操作を行ったことを示します。
これらのキーワードが見つかったら、その前後を詳しく読むことで、コンピュータの中で何が苦しんでいるのかを知るヒントになります。Linuxを操作する上で、dmesgはあなたの強い味方になってくれるはずです。少しずつ慣れて、システムと対話できるようになりましょう。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linuxシステムの運用管理やトラブルシューティングにおいて極めて重要な役割を果たすdmesgコマンドについて詳しく解説しました。リナックスカーネル(Linux Kernel)が、システムの起動時から現在に至るまでに出力した詳細なメッセージ、いわゆる「カーネルログ」をどのように確認し、どのように分析すべきか、その具体的な手法を網羅的にご紹介しました。
まず、dmesgコマンドの基本的な役割は、カーネルの「リングバッファ」と呼ばれるメモリ領域に蓄積された情報を表示することです。このログには、CPUやメモリ、ハードディスク(HDD)、SSD、USBデバイス、ネットワークインターフェース(NIC)といったハードウェアの認識状況や、デバイスドライバの読み込み結果、さらにはシステム実行中に発生した致命的なエラー(セグメンテーションフォールトやOOM:メモリ不足)などが記録されています。
dmesgコマンドの主要なオプションと活用シーン
実務でdmesgを使いこなすためには、以下の主要なオプションを組み合わせて、膨大なログから必要な情報を効率よく抽出するスキルが求められます。
- -T (--ctime) オプション:起動時からの経過秒数ではなく、人間が読みやすい「年月日 時分秒」の形式で時刻を表示します。
- -w (--follow) オプション:ログをリアルタイムで監視し、新しく発生したイベントを即座に画面に表示します。デバイスの抜き差し確認に最適です。
- -l (レベル) オプション:警告(warn)やエラー(err)など、重要度(ファシリティレベル)に応じて出力をフィルタリングします。
- -C オプション:リングバッファをクリアして、ログをリセットします(管理者権限が必要)。
実践的なログ検索とシェル芸の活用
dmesgコマンド単体でも強力ですが、他のLinuxコマンドと組み合わせることで、その真価を発揮します。例えば、特定のハードウェア(例えばUSBやPCIデバイス)に関する情報だけを見たい場合や、システムがクラッシュした原因を特定したい場合には、grepコマンドによる文字列検索が欠かせません。
以下に、実務でよく使われる高度な検索例をプログラムコードとして示します。これらはサーバー構築やデバッグ作業において、問題の切り分けを行うための定石(じょうせき)となる手法です。
# USBデバイスに関連するログのみを抽出し、最新の10行を表示する
dmesg | grep -i usb | tail -n 10
# メモリ不足(Out of Memory)が発生していないか、システム全体を確認する
dmesg | grep -i "out of memory"
# 警告以上の深刻なメッセージを、読みやすい時刻形式で表示する
dmesg -T -l warn,err,crit,alert,emerg
# 特定のイーサネット(eth0)に関する通信エラーがないかリアルタイム監視する
dmesg -w | grep eth0
Linuxシステムは非常に堅牢ですが、物理的な故障やドライバの不具合、設定ミスは避けられません。そんなとき、ログの海から「真実」を見つけ出すための羅針盤となるのがdmesgです。初心者の方は、まず-Tオプションで時間を分かりやすくし、grepで「error」を検索するところから始めてみてください。それが、リナックスマスターへの第一歩となります。
生徒
「先生、dmesgコマンドの使い方がだいぶ分かってきました!単にログを出すだけじゃなくて、色々なオプションで絞り込めるのが便利ですね。」
先生
「その通りです。特に-Tオプションを使って、いつエラーが起きたかを確認する癖をつけておくと、トラブルの発生時刻と他のイベントを照らし合わせやすくなりますよ。」
生徒
「さっき、自分のパソコンでdmesg | grep -i errorを試してみたら、いくつか表示されました。これって壊れているってことですか?」
先生
「いい質問ですね。実は、軽微な警告や、特定のドライバがオプションを探している際に出るエラーなど、動作に支障がないものも記録されることがあります。大切なのは、そのエラーの後にシステムが正常に動いているかどうかを見極めることです。」
生徒
「なるほど。ログが出たからといって、すぐにパニックになる必要はないんですね。正常なときのログと比較してみるのも勉強になりそうです。」
先生
「素晴らしい着眼点です!不具合がないときにdmesgの中身を眺めておくと、いざトラブルが起きたときに『いつもと違う場所』がすぐに分かるようになります。これがシステム管理のコツですよ。」
生徒
「ありがとうございます。今日学んだリアルタイム監視の-wも使いながら、もっとLinux内部の動きを観察してみます!」