【Linux】カーネルのログを確認するコマンド:dmesg

Linux

どーも!marusukeです!

カーネルのログを確認するコマンドdmesgについて説明します!

dmesgコマンドでできること

 dmesg [オプション]

dmesgコマンドは、カーネルリングバッファに記録されたメッセージを表示します

カーネルリングバッファとは、カーネルのログを保存するメモリのことで、システムの起動プロセス、ハードウェアの検出、ドライバのロード、エラーなどに関する情報が記録されています。カーネルリングバッファを確認することで、システムのトラブルシューティングや監視が可能です

ちなみにdmesgとは「display message」の略です

カーネルリングバッファ内のカーネルのログ(カーネルメッセージ)を表示する(display)と理解すれば覚えやすいです!

なぜ、カーネルリングバッファが必要なのか?

システムが完全に起動する前の段階のカーネルメッセージを記録するためです

ログ管理システムであるsyslogやrsyslogはユーザースペースで動作するため、システムの起動中に発生する初期のカーネルメッセージをログとして残すことができません

簡単にいうと、システム起動中なので、ログを保存するシステムが動いておらず、代わりにログを残す場所(カーネルリングバッファ)が必要ということです

システムが起動する際の初期メッセージ(ブート関連)は、トラブルの原因解明に重要な手掛かりとなります

dmesgコマンドの使用例

 dmesg

出力例(一部抜粋):

[    0.000000] Linux version 5.4.0-42-generic (buildd@lgw01-amd64-038) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 (Ubuntu 5.4.0-42.46-generic 5.4.44)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.4.0-42-generic root=UUID=1c2d3e4f-5a6b-7c8d-9e0f-1234567890ab ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai  
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
...
[    1.234567] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    1.567890] usb 1-1: New USB device found, idVendor=046d, idProduct=c52b, bcdDevice=12.01
[    1.567891] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.567892] usb 1-1: Product: USB Receiver
[    1.567893] usb 1-1: Manufacturer: Logitech

dmesgコマンドの主なオプション

dmesgコマンドには、ログの出力を制御するためのいくつかのオプションがあります。

オプション説明
-C, –clearカーネルリングバッファをクリアします。
-cカーネルリングバッファを表示し、クリアします。
-n, –console-levelコンソールログレベルを設定します
-r, –rawメッセージを生の形式で表示します
-T, –ctimeタイムスタンプを人間が読みやすい形式で表示します
-k, –kernelカーネルメッセージのみを表示します
-l, –level指定したレベルのメッセージのみを表示します
例: -l [レベル]
レベルは以下の通りです
・emerg 緊急(システムは使用不能)
・alert 即時の修正が必要
・crit 重大な条件
・err エラー条件
・warn 警告条件
・notice 通知
・info 情報メッセージ
・debug デバッグレベルのメッセージ
-f, –facility特定のファシリティ(facility)のメッセージのみを表示します
例: -f [ファシリティ]
ファシリティは以下です
・kern カーネルメッセージ
・user ユーザーメッセージ
・mail メールシステム
・daemon システムデーモン
・auth セキュリティ/認証
・syslog syslog自身
・lpr ラインプリンタサブシステム
・news ネットワークニュースサブシステム
・uucp Unix-to-Unixコピー
・cron クーロンデーモン
・authpriv セキュリティ/認証 (プライベート)
・ftp ftpデーモン
・local0〜7 ローカル用途
-n, –console-levelコンソールログレベルを設定します
例: -n [レベル値]
レベル値は以下です
・0 緊急(システムは使用不能)
・1 アラート(即時の修正が必要)
・2 クリティカル(重大な条件)
・3 エラー
・4 警告
・5 注意(重要な正常動作メッセージ)
・6 情報
・7 デバッグレベルのメッセージ

タイムスタンプ形式で表示した場合の例

dmesg -T

出力例(一部抜粋):

[Sat May 22 12:34:56 2024] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[Sat May 22 12:34:57 2024] usb 1-1: New USB device found, idVendor=046d, idProduct=c52b, bcdDevice=12.01
[Sat May 22 12:34:57 2024] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Sat May 22 12:34:57 2024] usb 1-1: Product: USB Receiver
[Sat May 22 12:34:57 2024] usb 1-1: Manufacturer: Logitech

dmesgログの用途

dmesgログは、システム管理やトラブルシューティングにおいて非常に重要な情報源です。以下に、dmesgログの具体的な用途をいくつか示します。

  1. システム起動の確認: 起動プロセスに問題がないかを確認するために使用します。
  2. ハードウェアの認識状況の確認: 新しいハードウェアが正しく認識されているか、ドライバが正しくロードされているかを確認します。
  3. エラーメッセージの確認: ハードウェアエラーやシステムエラーの原因を特定します。
  4. デバイスのトラブルシューティング: デバイスが期待通りに動作していない場合、原因を特定するために使用します。

dmesgログの保存

多くのLinuxディストリビューションでは、dmesgログの内容が定期的にファイルに保存されています。このファイルは通常、/var/log/dmesgまたは/var/log/boot.logにあります

cat /var/log/dmesg

dmesgログは、システムのカーネルレベルのメッセージを記録し、トラブルシューティングやシステム監視に役立ちます。dmesgコマンドとそのオプションを使用することで、詳細なカーネルメッセージを確認できます

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました