はじめに
dmesg
commandは、カーネルリングバッファから取得したカーネル関連のメッセージを表示するLinuxユーティリティです。リングバッファには、ハードウェア、デバイスドライバの初期化、およびシステムの起動中に発生するカーネルモジュールからのメッセージに関する情報が格納されます。
dmesg
このコマンドは、ハードウェア関連のエラー、警告のトラブルシューティング、およびデバイス障害の診断に非常に役立ちます。
このチュートリアルでは、 dmesg
の使用方法を学習します Linuxのコマンド。
前提条件
- Linuxを実行しているコンピュータシステム。
- 管理者権限を持つユーザーアカウント。
構文とオプション
基本的なdmesg
コマンド構文は次のとおりです。
dmesg [options]
次の表に、最も一般的に使用される dmesg
を示します。 オプション:
オプション | 説明 |
---|---|
-C、-clear | リングバッファをクリアします。 |
-c、-read-clear | リングバッファの内容を出力してからクリアします。 |
-f、--facility [list] | 出力を指定されたコンマ区切りの機能に制限します[list] 。 |
-H、-human | 人間が読める形式の出力を有効にします。 |
-L、-color [=auto | never | always] | 出力に色を追加します。 [auto | never | always] を省略します 引数のデフォルトはautoです。 |
-l、-level [list] | 出力を指定されたコンマ区切りのレベルリストに制限します。 |
-noescape | 印刷できない文字や安全でない可能性のある文字を自動的にエスケープする機能を無効にします。 |
-S、-syslog | dmesg に指示します syslogカーネルインターフェイスを使用してカーネルメッセージを読み取ります。デフォルトでは、 / dev / kmsgを使用します syslogの代わりに 。 |
-s、-buffer-size [size] | 指定されたバッファサイズを使用して、カーネルリングバッファをクエリします。デフォルト値は16392です。 |
-T、-ctime | 人間が読める形式のタイムスタンプを出力します。 |
-t、-notime | dmesg に指示します カーネルのタイムスタンプを出力しないようにします。 |
-time-format [format] | 指定された[format] を使用してタイムスタンプを出力します 。使用できる形式はctime 、 reltime 、デルタ 、および iso ( dmesg ISO-8601形式の実装)。 |
-w、-follow | dmesg を保持します 実行して新しいメッセージを待っています。この機能は、読み取り可能な / dev / kmsgを備えたシステムでのみ使用できます。 ファイル。 |
-x、-decode | ファシリティ番号とレベル番号を人間が読める形式のプレフィックスにデコードします。 |
-h、-help | 使用可能なすべてのオプションを含むヘルプファイルを表示します。 |
Linuxdmesgコマンドの例
例は一般的なdmesg
コマンドの使用例。
カーネルリングバッファからのすべてのメッセージを表示する
dmesg
を呼び出す オプションがないと、カーネルバッファ全体が出力され、停止することなく、出力をナビゲートする方法がありません。
sudo dmesg
上記の例は、部分的な dmesg
です。 コマンド出力。ナビゲーションを簡単にし、読みやすくするために、 dmesg
をパイプします less
などのターミナルページャに出力します 、詳細code>
、または grepを使用します 。
例:
sudo dmesg | less
配管dmesg
少ない
に 検索機能を使用して、アイテムを見つけて強調表示することができます。 /を押して検索を有効にします 。 スペースバーを使用して次の画面に移動します 、または Bを使用してリバース 鍵。 Qを押して出力を終了します 。
色付きのメッセージを表示する
デフォルトでは、 dmesg
色付きの出力を生成します。出力に色が付いていない場合は、 -L
を使用します 色付けするオプション。
sudo dmesg -L
色付きの出力をオフにするには、 -color =never
を追加します dmesg
のオプション 。次のコマンドを実行します:
sudo dmesg --color=never
デフォルトのdmesg
出力の色が均一になりました。
到着時にメッセージを表示する
-follow
を使用して、カーネルリングバッファをリアルタイムで監視します オプション。このオプションは、システムの起動後にハードウェアまたはカーネルモジュールに関連する新しいメッセージを待つようにコマンドに指示します。
次のdmesg
を実行します リアルタイムのカーネルリングバッファ監視を有効にするコマンド:
sudo dmesg --follow
このコマンドは、ターミナルウィンドウの下部に新しいメッセージを表示します。 Ctrl + Cを使用してプロセスを停止します 。
特定の用語を検索
特定の問題やハードウェアメッセージを検索するときは、 dmesg
をパイプします grep
に出力 特定の文字列またはパターンを検索します。
たとえば、メモリに関するメッセージを探している場合は、次のコマンドを実行します。
dmesg | grep -i memory
出力には、 memory
を含むバッファからのすべての行が表示されます ストリング。 -i
(大文字と小文字を区別しない)スイッチはケア感度を無視します。
または、USB、シリアルポート、ネットワーク、またはハードドライブに関するバッファメッセージを探している場合は、次のコマンドを実行します。
USB
dmesg | grep -i usb
シリアルポート
dmesg | grep -i tty
ネットワーク
dmesg | grep -i eth
ハードドライブ
sudo dmesg | grep -i sda
-E
を追加して、一度に複数の用語を検索します grep
のオプション パイプ区切り文字で区切られた、引用符で囲まれた検索語を提供します。例:
sudo dmesg | grep -E "memory|tty"
出力には、検索語のいずれかを含むすべてのメッセージが出力されます。
dmesgログの読み取りとクリア
-c
( -read-clear
)オプションを使用すると、 dmesg
をクリアできます 印刷後にログに記録します。バッファをクリアすると、最新の再起動からの有効なメッセージのみが表示されます。
次のコマンドを実行します:
sudo dmesg -c
dmesg
を再実行します ログがクリアされたため、出力はありません。
dmesgログでタイムスタンプを有効にする
dmesg
でタイムスタンプを有効にする -H
を追加して出力します (-人間
)オプション。人間が読める形式の出力を生成し、出力をポケットベルに自動的にパイプします(少ない
。
次のコマンドを実行します:
sudo dmesg -H
このコマンドは、解決された日付と時刻を分単位で含むタイムスタンプを追加します。同じ分のイベントには、秒とナノ秒のラベルが付けられます。
Q を押して、ポケットベルを終了します 。
人間が読めるタイムスタンプを有効にする
-T
を使用して、人間が読める形式のタイムスタンプを有効にします ( -ctime
) オプション。このオプションは、出力からナノ秒の精度を削除しますが、タイムスタンプを追跡する方が簡単です。
sudo dmesg -T
出力のタイムスタンプは標準の日付と時刻であり、解像度は分単位です。同じ分に発生した各アクションに同じタイムスタンプが付加されます。
タイムスタンプ形式を選択
-time-format [format]
を使用します タイムスタンプ形式を選択するオプション。使用可能な形式は次のとおりです。
-
ctime
-
reltime
デルタ
-
notime
-
iso
たとえば、 iso
を使用するには フォーマット、実行:
sudo dmesg --time-format=iso
タイムスタンプの形式は、 YYYY-MM-DD
になりました。 。
dmesgの出力を特定のファシリティに制限する
dmesg
をフィルタリングする -f
を使用して特定のカテゴリに出力する オプション。システムは、カーネルリングバッファ内のメッセージを次の機能(カテゴリ)にグループ化します。
カーン
。カーネルメッセージ。ユーザー
。ユーザーレベルのメッセージ。メール
。メールシステムメッセージ。デーモン
。システムデーモンに関するメッセージ。-
auth
。承認メッセージ。 -
syslog
。内部syslogd
メッセージ。 -
lpr
。ラインプリンタサブシステムメッセージ。 ニュース
。ネットワークニュースサブシステムメッセージ。
たとえば、次のコマンドは、出力を syslog
に関連するメッセージに制限します。 施設:
sudo dmesg -f syslog
複数のファシリティからのメッセージを一覧表示するには、ファシリティのコンマ区切りリストを指定します。例:
sudo dmesg -f syslog,daemon
フィルターログレベル
dmesg
コマンドは、各バッファメッセージをメッセージの重要性を特徴付けるログレベルに関連付けます。利用可能なレベルは次のとおりです。
-
emerg
。緊急メッセージ。 アラート
。早急な対応が必要なアラート。クリティカル
。重大な状態。-
err
。エラーメッセージ。 警告
。警告メッセージ。通知
。通常ですが重要な状態です。情報
。情報メッセージ。デバッグ
。デバッグレベルのメッセージ。
dmesg
に指示する -l </ code>を使用して、特定のレベルに一致するメッセージのみを出力します
オプションの後にレベル名が続きます。例:
sudo dmesg -l info
上記の例では、ログから情報メッセージのみを抽出します。
カンマ区切りのリストで複数のレベルを組み合わせて、それらのレベルからメッセージを取得します。例:
sudo dmesg -l notice,warn
出力は、指定されたログレベルからのメッセージを結合します。
施設とレベルの組み合わせ
-x
を使用して、各行の先頭に各バッファメッセージの機能とログレベルを明示的に表示します (デコード)オプション。
例:
sudo dmesg -x
上記の例では、各行の前に適切な機能とログレベルが追加されています。
dmesgログファイルの読み取り
システムが起動するたびに、カーネルリングバッファからのメッセージが / var / log / dmesgに保存されます。 ファイル。 dmesg
コマンドはログファイルの内容を表示します。 dmesg
の使用に問題がある場合 コマンドを実行し、テキストエディタでログファイルを開いて内容を表示します。
以下の例では、catコマンドを使用してログファイルを表示し、それを grep
にパイプします。 ログにある特定の文字列を検索するには:
cat dmesg | grep amd
このコマンドは、すべての amd
を出力します ログファイル内の文字列インスタンス。
CDドライブを確認する
バッファメッセージログを調べて、リモートマシンにCDドライブが装備されているかどうかを確認します。たとえば、次のコマンドは、起動時に初期化されたCDデバイスに関するすべてのメッセージを表示します。
sudo dmesg | grep -iE 'cdrom|dvd|cd/rw|cd-rom'
結果には、このマシンの仮想CD-ROMドライブを含む、使用可能なCD-ROMドライブに関する情報が表示されます。
sudo要件を削除
スーパーユーザー権限の要件を削除すると、すべてのユーザーが dmesg
を実行できるようになります カーネルリングバッファメッセージを表示します。次のコマンドを実行して、sudo要件を削除します。
sudo sysctl -w kernel.dmesg_restrict=0
制限を0
に設定した後 、システム上のすべてのユーザーが dmesg
を実行できます 。