Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all
名前
dmesg - カーネルの (ログ用) リングバッファの表示や制御を行う
書式
dmesg [options] dmesg --clear dmesg --read-clear [options] dmesg --console-level level dmesg --console-on dmesg --console-off
説明
dmesg は、カーネルのリングバッファを調べたり、制御したりするために使用する。 デフォルトの動作は、カーネルのリングバッファにあるすべてのメッセージを表示することである。
オプション
--clear, --read-clear, --console-on, --console-off, --console-level は、どれか一つしか使え ない。 -C, --clear リングバッファをクリアする。 -c, --read-clear まずリングバッファの内容を表示し、その後でクリアする。 -D, --console-off コンソールへのメッセージ出力を抑止する (訳注: ただし emergency レベルのメッセージだ けは表示する)。 -d, --show-delta タイムスタンプ (訳注: ブートからの経過秒数をマイクロ秒まで表示) とともに、前のメッ セージ出力から経過した時間の増分 (time delta) を表示する。--notime と一緒に使用した 場合は、タイムスタンプは省略して、時間の増分だけを表示する。 -E, --console-on コンソールへのメッセージ出力を有効にする。 -e, --reltime ローカルタイムと時間の増分を人間に読みやすいフォーマットで表示する。 ローカルタイム への変換は不正確かもしれないことを、ご承知いただきたい (詳しくは -T を参照)。 -F, --file file 指定されたファイル file から syslog のメッセージを読み込む。-F は、kmsg フォーマッ トのメッセージをサポートしていないことに気をつけていただきたい。 サポートしているの は、昔ながらの syslog フォーマットだけである。 -f, --facility list 出力を指定されたファシリティの (コンマで区切った) リストに限定する。たとえば、 dmesg --facility=daemon は、システムデーモンのメッセージのみを表示する。 どんなファシリティがサポートされて いるかについては、--help の出力をご覧いただきたい。 -H, --human 人間に読みやすい出力にする。--color, --reltime, --nopager も参照。 -k, --kernel カーネルメッセージを表示する (訳注: つまり、ファシリティが kern のメッセージのみを 表示する)。 -L, --color[=when] 出力をカラー表示にする。指定が任意の引き数 when には、auto, never, always が使え る。引き数 when が省略された場合は、デフォルトの auto が使用される。カラー表示は無 効にすることもできる。 プログラムに埋め込まれた現在のデフォルトが有効か無効かを知る には、 --help の出力を見ればよい。下記の「カラー表示」セクションもご覧いただきた い。 -l, --level list 出力を指定されたレベル (訳注: 重大度、緊急度) の (コンマで区切った) リストに限定す る。たとえば、 dmesg --level=err,warn は、error と warning メッセージのみを表示する。どんなレベルがサポートされているかに ついては、--help の出力をご覧いただきたい。 -n, --console-level level コンソールに出力されるログメッセージのレベル (重大度) を level に設定する。level に 指定するのは、数値のレベルか、レベルの名称の短縮形である。 どんなレベルがサポートさ れているかについては、 --help の出力をご覧いただきたい。 [訳注] 現在使用中のコンソール (X 上の端末エミュレータではない) に自動的に表示され るメッセージが、指定したレベル以上の重大度を持つものになる。 数値による指定 の場合は、その数値を含まない、それより重大な (つまり、数値が小さい) レベル のメッセージが表示され、名称による指定の場合は、 その名称を含む、それ以上の 重大度のメッセージが表示されるようになる。 レベルの数値について は、syslog(2) を参照。 たとえば、-n 1 や -n emerg を指定すると、emergency (panic) 以外のすべてのメッセージ が、コンソールに表示されなくなる。とは言え、 すべてのレベルのメッセージが /proc/kmsg に書き込まれることに変わりはないので、 カーネルメッセージをどこに出力す るかは、やはり syslogd(8) 使って、きちんとコントロールすることができる。なお、 -n オプションを使用したとき、dmesg がカーネルのリングバッファを表示したり、クリアした りすることはない (訳注: この -n オプションは、コンソールに自動的に表示されるメッ セージのレベルを設定するだけである)。 --noescape 非表示文字や問題を起こしかねない文字 (たとえば、破損したマルチバイトシーケンス や、端末制御文字など) は、デフォルトではセキュリティ上の理由から \x<hex> の形式でエ スケープされるようになっている。このオプションはその機能を完全に無効にする。 このオ プションは、たとえば --raw と併せて、デバッグのために使用できる。 使用には気を付け ること。デフォルトで使うようにしてはいけない。 -P, --nopager 出力をパイプでページャーに渡さない。--human の出力では、ページャーはデフォルトで使 用される。 -p, --force-prefix 複数行メッセージの各行にファシリティ、レベル、タイムスタンプの情報を付け加える。 -r, --raw メッセージバッファを未加工 (raw) のまま表示する。 すなわち、ログレベルを表す接頭辞 を取り除かない。 ただし、すべての非表示文字がエスケープされることには変わりがない (--noescape も参照)。 注意してほしいが、実際の未加工フォーマットは、dmesg(1) がカーネルメッセージを読み出 す方法によって違ってくる (訳注: すぐ下の -S オプションや -F オプションの説明も参 照)。デバイス /dev/kmsg と syslog(2) では、違ったフォーマットを使っているのである。 ただし、後方互換のため、dmesg は、常に syslog(2) のフォーマットでデータを返すように なっている。/dev/kmsg にある本当の未加工データは、たとえば、'dd if=/dev/kmsg iflag=nonblock' といったコマンドを使えば、読むことができる。 -S, --syslog カーネルメッセージを読み出すのに、dmesg が syslog(2) のカーネルインターフェースを使 うようにする。kernel 3.5.0 以来、syslog(2) ではなく、/dev/kmsg を使用するのがデフォ ルトである。 -s, --buffer-size size カーネルのリングバッファへの問い合わせに、サイズ size のバッファを使用する。デフォ ルトでは 16392 である。(デフォルトのカーネル・シスログバッファのサイズは、最初は 4096 だったが、1.3.54 以後は 8192 になり、2.1.113 以来 16384 になった。) カーネル バッファをデフォルトより大きく設定している場合に、バッファを全部見るには、 このオプ ションを使えばよい。 -T, --ctime 人間に読みやすいタイムスタンプを表示する。 「このタイムスタンプは不正確なことがある!」のをご承知いただきたい。 ログに使用す る、タイムスタンプの元になる情報 (the time source) は、システムのサスペンド/レ ジューム後に、更新が行われない。 更新が行われないので、タイムスタンプは、ブートタイ ムと単調増加クロック (monotonic clocks) との間の現在の増分 (delta) によって時間合わ せがなされているのだが、そうした時間合わせが、 最後のレジューム以後に表示されるメッ セージ同士の間でしかうまく働かないのである。 [訳注] つまり、サスペンド/レジューム直後のタイムスタンプについては、 時間合わせが うまく行かない。 言葉を変えると、カーネル・リングバッファのタイムスタンプで は、 ブートタイムと実稼働時間のみが使用されており、サスペンド中の時間は加算 されない。 それ故、サスペンド後の dmesg の日時表示は信用できないということ である。 -t, --notime カーネルが出力するタイムスタンプを表示しない。 --time-format format 指定されたフォーマット format を使って、タイムスタンプを表示する。format に は、ctime, reltime, delta, iso が使える。 最初の三つは、それぞれのタイムフォーマッ トを指定するオプション (訳注: --ctime など) のエイリアスであり、iso フォーマット は、ISO-8601 のタイムスタンプフォーマットの demsg における実装である。 この最後の フォーマットの目的は、 二つのシステム間でのタイムスタンプの比較のような解析作業を容 易にすることだ。 iso タイムスタンプは、 YYYY-MM-DD<T>HH:MM:SS,<microseconds><-+><timezone offset from UTC> という形式にな る。 iso フォーマットにも ctime と同じ問題がある。 すなわち、システムがサスペンド、レ ジュームした場合、日時は不正確かもしれないのである。 -u, --userspace ユーザ空間のメッセージを表示する。 -w, --follow 新しいメッセージが出力されるのを待つ。この機能は、/dev/kmsg を読むことのできるシス テムでのみサポートされている (カーネル 3.5.0 以降)。 -W, --follow-new 待機する。そして、新しいメッセージのみを表示する。 -x, --decode ファシリティとレベル (重大度) の番号を人間に分かりやすい接頭辞に変換する。 -V, --version バージョン情報を表示して終了する。 -h, --help ヘルプを表示して終了する。
カラー表示
自動的なカラー表示は、/etc/terminal-colors.d/dmesg.disable という空ファイルを作ることで無 効にできる。 カラー表示の設定についてもっと詳しいことを知りたかった ら、terminal-colors.d(5) をご覧になるとよい。 dmesg は、以下の論理カラー名をサポートしている。 subsys メッセージのサブシステム接頭辞 (たとえば、"ACPI")。 time メッセージのタイムスタンプ。 timebreak --reltime や --human における出力メッセージの、短い ctime フォーマットで表現したタ イムスタンプ。 alert ログの重大度が alert のメッセージのテキスト部分。 crit ログの重大度が critical のメッセージのテキスト部分。 err ログの重大度が error のメッセージのテキスト部分。 warn ログの重大度が warning のメッセージのテキスト部分。 segfault セグメンテーションフォールトを知らせるメッセージのテキスト部分。
終了ステータス
dmesg が「操作が許可されていない」旨のエラーを出して、実行に失敗することがある。 これが起 きるのは、たいてい、カーネルの設定 dmesg_restrict のせいである。詳しくは、syslog(2) をご覧 いただきたい。
作者
Karel Zak <kzak@redhat.com> dmesg を最初に書いたのは、Theodore Ts'o <tytso@athena.mit.edu> だった。
関連項目
terminal-colors.d(5), syslogd(8)
入手方法
この dmesg コマンドは、util-linux パッケージの一部であり、Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/> から入手できる。