どーも!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
ログの具体的な用途をいくつか示します。
- システム起動の確認: 起動プロセスに問題がないかを確認するために使用します。
- ハードウェアの認識状況の確認: 新しいハードウェアが正しく認識されているか、ドライバが正しくロードされているかを確認します。
- エラーメッセージの確認: ハードウェアエラーやシステムエラーの原因を特定します。
- デバイスのトラブルシューティング: デバイスが期待通りに動作していない場合、原因を特定するために使用します。
dmesgログの保存
多くのLinuxディストリビューションでは、dmesg
ログの内容が定期的にファイルに保存されています。このファイルは通常、/var/log/dmesg
または/var/log/boot.log
にあります
cat /var/log/dmesg
dmesg
ログは、システムのカーネルレベルのメッセージを記録し、トラブルシューティングやシステム監視に役立ちます。dmesg
コマンドとそのオプションを使用することで、詳細なカーネルメッセージを確認できます
以上です!
ここまで読んでいただきありがとうございました!
コメント