技術ノート Linux Linux で dmesg コマンドを使用する方法

Linux で dmesg コマンドを使用する方法

重要なポイント

  • dmesg コマンドを使用すると、Linux リング バッファに保存されているメッセージを確認して、ハードウェア エラーや起動時の問題についての洞察を得ることができます。
  • dmesg コマンドをカスタマイズするには、sudo の必要性の削除、カラー出力の強制、人間が判読できるタイムスタンプの使用、ライブ イベントの監視、最後のメッセージの取得、特定の用語の検索、ログ レベルまたは機能カテゴリによるフィルタリングを実行できます。

dmesg コマンドを使用すると、Linux 起動プロセスの隠された世界を覗き見ることができます。 「障害発見者の友人」を使用して、カーネル自体のリング バッファからのハードウェア デバイスとドライバーのメッセージを確認および監視します。

Linux のリングバッファの仕組み

Linux および Unix 系のコンピュータでは、ブートとスタートアップは、コンピュータの電源がオンになったときに発生する一連のイベントの 2 つの異なるフェーズです。

ブート プロセス ( BIOS または UEFI MBR 、および GRUB ) は、カーネルがメモリにロードされ、初期 RAM ディスク ( initrd または initramfs ) に接続され、 systemd が開始される時点までシステムの初期化を行います。

次に、起動プロセスがバトンを受け取り、オペレーティング システムの初期化を完了します。初期化のごく初期の段階では、 syslogd rsyslogd などのログ デーモンはまだ起動して実行されていません。初期化のこの段階で顕著なエラー メッセージや警告が失われないようにするために、カーネルにはメッセージ ストアとして使用する リング バッファ が含まれています。

リング バッファは、メッセージ用に予約されているメモリ空間です。シンプルなデザインで、固定サイズです。いっぱいになると、新しいメッセージが最も古いメッセージを上書きします。概念的には、これは「 循環バッファ 」と考えることができます。

カーネル リング バッファには、デバイス ドライバーの初期化メッセージ、ハードウェアからのメッセージ、カーネル モジュールからのメッセージなどの情報が格納されます。リング バッファにはこれらの低レベルの起動メッセージが含まれるため、ハードウェア エラーやその他の起動問題の調査を開始するのに適しています。

そこで dmesg コマンドが登場します。

Linux で dmesg コマンドを使用する方法

dmesgコマンドとは何ですか?

dmesg コマンドを 使用すると、リング バッファに保存されているメッセージを確認できます 。デフォルトでは、 dmesg を使用するには sudo を使用する必要があります。

 sudo dmesg

リング バッファ内のすべてのメッセージがターミナル ウィンドウに表示されます。

それは大洪水でした。明らかに、私たちがする必要があるのは、 less パイプする ことです。

 sudo dmesg |少ない

これで、メッセージをスクロールして興味のある項目を探すことができます。

less 内で検索機能を使用すると、興味のある項目や用語を見つけてハイライト表示できます。less less でスラッシュ キー「/」を押して検索機能を開始します。

Linux で dmesg コマンドを使用する方法

sudo の必要性の除去

dmesg 使用するたびに sudo 使用する必要がないようにするには、このコマンドを使用できます。ただし、注意してください。これにより、コンピュータのユーザー アカウントを持つ人は誰でも sudo 使用しなくても dmesg を使用できるようになります。

 sudo sysctl -w kernel.dmesg_restrict=0 

Linux で dmesg コマンドを使用する方法

カラー出力の強制

デフォルトでは、 dmesg おそらく色付きの出力を生成するように設定されています。そうでない場合は、 -L (color) オプションを使用して出力を色付けするように dmesg に指示できます。

 sudo dmesg -L

dmesg を常にデフォルトで色付き表示に設定するには、次のコマンドを使用します。

 sudo dmesg --color=always 

Linux で dmesg コマンドを使用する方法

人間のタイムスタンプ

デフォルトでは、 dmesg カーネルが起動してからの秒および ナノ秒 のタイムスタンプ表記を使用します。これをより人間に優しい形式でレンダリングするには、 -H (人間) オプションを使用します。

 sudo dmesg -H

これにより、2 つのことが起こります。

  • 出力は自動的に less で表示されます。
  • タイムスタンプには、日付と時刻のタイムスタンプが分単位で表示されます。各分に発生したメッセージには、その分の開始からの秒とナノ秒のラベルが付けられます。
Linux で dmesg コマンドを使用する方法

dmesg による人間が判読できるタイムスタンプ

ナノ秒の精度は必要ないが、デフォルトよりも読みやすいタイムスタンプが必要な場合は、 -T (人間が判読できる) オプションを使用します。 (少し混乱します。 -H は「人間向け」オプション、 -T は「人間が読める」オプションです。)

 sudo dmesg -T

タイムスタンプは標準の日付と時刻として表示されますが、解像度は 1 分に低下します。

1 分以内に起こったすべてのタイムスタンプが同じになります。イベントの順序だけが気になる場合は、これで十分です。また、コマンド プロンプトにダンプされていることにも注意してください。このオプションは自動的に less 呼び出しません。

Linux で dmesg コマンドを使用する方法

dmesg を使用してライブ イベントを視聴する

カーネル リング バッファに到着したメッセージを表示するには、 --follow (メッセージを待機) オプションを使用します。その文は少し奇妙に思えるかもしれません。起動シーケンス中に発生するイベントからのメッセージを保存するためにリング バッファーが使用されている場合、コンピューターが起動して実行された後、ライブ メッセージはどのようにしてリング バッファーに到着するのでしょうか?

コンピュータに接続されているハードウェアに変更が生じると、メッセージがカーネル リング バッファに送信されます。カーネル モジュールを更新または追加すると、それらの変更に関するリング バッファ メッセージが表示されます。 USB ドライブを接続するか、Bluetooth デバイスを接続または切断すると、 dmesg 出力にメッセージが表示されます。仮想ハードウェアであっても、リング バッファに新しいメッセージが表示されることがあります。仮想マシンを起動すると、新しい情報がリング バッファに到着するのがわかります。

 sudo dmesg --フォロー

コマンド プロンプトには戻らないことに注意してください。新しいメッセージが表示されると、 dmesg によってターミナル ウィンドウの下部に表示されます。

CD-ROM ディスクの内容をディレクトリ ツリーに移植しているため、CD-ROM ディスクをマウントするだけでも変更として認識されます。

リアルタイム フィードを終了するには、 Ctrl+C を押します。

最新の 10 メッセージを取得する

tail コマンドを使用して 、最後の 10 個のカーネル リング バッファ メッセージを取得します 。もちろん、メッセージはいくつでも取得できます。 10 は単なる例です。

 sudo dmesg |最後 -10

最新の 10 メッセージが取得され、ターミナル ウィンドウにリストされます。

特定の用語を検索する

dmesg からの出力を grep にパイプして 、特定の文字列またはパターンを検索します 。ここでは、一致する文字列の大文字と小文字が無視されるように -i (大文字と小文字を無視) オプションを使用しています。結果には、「usb」と「USB」、およびその他の小文字と大文字の組み合わせが含まれます。

 sudo dmesg | grep -i USB

強調表示された検索結果は大文字と小文字で表示されます。

システム sda 上の最初の SCSI ハードディスクへの参照を含むメッセージを分離できます。 (実際、 sda 現在、 最初の SATA ハード ドライブ や USB ドライブにも使用されています。)

 sudo dmesg | grep -i sda

sda に言及するすべてのメッセージが取得され、ターミナル ウィンドウにリストされます。

一度に複数の用語を grep 検索するには、 -E (正規表現の拡張) オプションを使用します。検索語はパイプ「|」で引用符で囲んだ文字列内に指定する必要があります。検索語間の区切り文字:

 sudo dmesg | grep -E "メモリ|tty|dma"

検索用語に言及するメッセージはすべて、ターミナル ウィンドウにリストされます。

ログレベルの使用

カーネル リング バッファに記録されるすべてのメッセージにはレベルが関連付けられています。レベルはメッセージ内の情報の重要性を表します。レベルは次のとおりです。

  • emerg : システムが使用できません。
  • アラート : 直ちにアクションを実行する必要があります。
  • crit : クリティカルな状態。
  • err : エラー状態。
  • warn : 警告条件​​。
  • 注意 : 正常ですが重大な状態です。
  • info : 情報。
  • debug : デバッグレベルのメッセージ。

-l (レベル) オプションを使用し、レベルの名前をコマンドライン パラメータとして渡すことで、 dmesg 特定のレベルに一致するメッセージを抽出できるようになります。 「情報」レベルのメッセージのみを表示するには、次のコマンドを使用します。

 sudo dmesg -l 情報

リストされているメッセージはすべて情報メッセージです。これらにはエラーや警告は含まれず、役立つ通知だけが含まれます。

1 つのコマンドで 2 つ以上のログ レベルを組み合わせて、複数のログ レベルのメッセージを取得します。

 sudo dmesg -l デバッグ、通知

dmesg からの出力は、各ログ レベルのメッセージを組み合わせたものです。

施設のカテゴリー

dmesg メッセージは、「ファシリティ」と呼ばれるカテゴリにグループ化されます。施設のリストは次のとおりです。

  • kern : カーネルメッセージ。
  • user : ユーザーレベルのメッセージ。
  • mail : メールシステム。
  • デーモン : システムデーモン。
  • auth : セキュリティ/認可メッセージ。
  • syslog : 内部 syslogd メッセージ。
  • lpr : ラインプリンターサブシステム。
  • news : ネットワーク ニュース サブシステム。

dmesg に出力をフィルタリングして、特定の機能のメッセージのみを表示するように依頼できます。これを行うには、 -f (機能) オプションを使用する必要があります。

 sudo dmesg -f デーモン

dmesg ターミナル ウィンドウ内のデーモンに関連するすべてのメッセージをリストします。

レベルの場合と同様に、 dmesg に複数の機能からのメッセージを一度にリストするように依頼できます。

 sudo dmesg -f syslog、デーモン

出力には、syslog メッセージとデーモン ログ メッセージが混在します。

施設とレベルの組み合わせ

-x (デコード) オプションを使用すると、 dmesg 機能とレベルを人間が判読できるプレフィックスとして各行に表示します。

 sudo dmesg -x

施設とレベルは各行の先頭に表示されます。

最初の強調表示されたセクションは、「通知」レベルの「カーネル」機能からのメッセージです。 2 番目に強調表示されているセクションは、「情報」レベルの「カーネル」機能からのメッセージです。

それは素晴らしいことですが、なぜでしょうか?

一言で言えば、間違い探しです。

ハードウェアの一部が認識されない、または正しく動作しないという問題が発生している場合は、 dmesg 問題を解決する可能性があります。

  • dmesg を使用してメッセージを最上位レベルから下位レベルまで確認し、ハードウェア項目に言及しているエラーや警告、または問題に関係している可能性のあるエラーや警告を探します。
  • dmesg を使用して適切な機能に関する記述を検索し、有用な情報が含まれているかどうかを確認します。
  • dmesg grep にパイプし、関連する文字列または製品の製造元やモデル番号などの識別子を探します。
  • dmesg grep にパイプして、「gpu」や「storage」などの一般的な用語、または「failure」、「failed」、「unable」などの用語を探します。
  • --follow オプションを使用して、 dmesg メッセージをリアルタイムで監視します。

楽しい狩猟を。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 Linux で dmesg コマンドを使用する方法」に関するベスト動画選定!

Linuxコマンドをこっそり練習する方法㊙
【とりあえず覚えておけば大丈夫】Linuxコマンド10選についてお話します