dmesgコマンド

dmesgコマンド

用途

カーネルのログやブート時のメッセージを表示する

書式

dmesg [オプション]

主なオプション

  • -c  内容を表示した後に消去する
  • -n NUM表示するログレベルをNUMに設定する
  • -s NUMバッファのサイズを指定して表示する(デフォルトは16392)
  • ※オプションを複数指定した場合は、最後のオプションのみ有効

dmesgコマンドの解説

dmesgコマンドは、カーネルのリングバッファの内容を表示するためのコマンドで、
システム起動時のメッセージや、稼働中のカーネル情報などを得ることができます。
また、/var/log/dmesg ファイルを参照することで、同じような情報を得ることが可能です。

・dmesgの表示例
[devi@syslog ~]$ dmesg
agpgart: Maximum main memory to use for agp memory: 204M
agpgart: AGP aperture is 64M @ 0xe0000000
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 68 ports, IRQ sharing enabled
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
divert: not allocating divert_blk for non-ethernet device lo
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH2: IDE controller at PCI slot 0000:00:1f.1
ICH2: chipset revision 0
ICH2: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0x6c00-0x6c07, BIOS settings: hda:DMA, hdb:DMA
Probing IDE interface ide0…
hda: Virtual HDD [0], ATA DISK drive
hdb: PRL CD-ROM [1], ATAPI CD/DVD-ROM drive
Using cfq io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1…
Probing IDE interface ide2…
Probing IDE interface ide3…
Probing IDE interface ide4…
Probing IDE interface ide5…
hda: max request size: 1024KiB
hda: 65536128 sectors (33554 MB) w/2048KiB Cache, CHS=16383/255/63, UDMA(100)
hda: cache flushes supported
hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 >
hdb: ATAPI 44X CD-ROM drive, 2048kB Cache, UDMA(25)



[省略]

[devi@syslog ~]$

通常は、オプションを付けずに使用して、
出てきたログをザラっと立て読みしていくことが多いですが、
大きくなったバッファをクリアしたり(-c)
表示させたいメッセージレベルを限定(-n)すると、
必要な情報を効率よく見つけ出せるようになるかもしれません。

-n オプションで指定するメッセージのログレベルは、
syslogで用いられているpriorityの値を使用しています。

< @>例えば、dmesg -n 1 と指定すれば、EMERGレベルのメッセージ以外は、
コンソールに出力されないようにすることができます。

-n オプションの引数に指定するpriorityの値一覧

  • 1EMERG - システム使用不可など危険な状態
  • 2ALERT - 危険な状態、警告
  • 3CRIT - 重大な問題が発生
  • 4ERR - 通常のエラー状態
  • 5WARNING - システムからの警告
  • 6NOTICE - システムからの注意、通知
  • 7INFO - システムからの情報
  • 8DEBUG - デバッグレベルの情報

※コンソールに設定したログレベルよりも、値の小さいレベルのログが出力されます。

実際の各レベルの数値の割当てについては、
/usr/src 内にある、kernel.hというファイルに記述されています。
気になる方は一度確認しておくと良いかもしれません。

以下は、CentOSでの表示例です。

・CentOS上でのログレベル確認例
[root@syslog ~]# less /usr/src/kernels/2.6.9-78.0.8.EL-i686/include/linux/kernel.h

#define KERN_EMERG “<0>” /* system is unusable */
#define KERN_ALERT “<1>” /* action must be taken immediately */
#define KERN_CRIT “<2>” /* critical conditions */
#define KERN_ERR “<3>” /* error conditions */
#define KERN_WARNING “<4>” /* warning conditions */
#define KERN_NOTICE “<5>” /* normal but significant condition */
#define KERN_INFO “<6>” /* informational */
#define KERN_DEBUG “<7>” /* debug-level messages */

ログの仕組みについて更に詳しく知りたい方は、
第2回 PD思考法の基礎と情報収集(その2)の記事が参考になります。

dmesgコマンドの便利な使い方

上記の解説では少しマニアックになってしまいましたが、
トラブルシューティングなどで、実際にdmesgコマンドを使用する際は、
そんなマニアックな設定などせずに、そのままのログを抽出して、
Linuxに詳しい人にメールで送りつければ大体の問題は解決しそうです。

dmesgのログを抽出する際には、リダイレクトの機能を使って、
ログ用の新規ファイルに書き込んでしまえば仕事が早く片付きます。

・dmesgの抽出例
[devi@syslog ~]$ dmesg > /home/devi/dmesglog_20100201.txt
[devi@syslog ~]$

[devi@syslog ~]$ ls -l /home/devi/
total 64
-rw-rw-r– 1 devi devi 59683 Feb 1 21:26 dmesglog_20100201.txt
[devi@syslog ~]$

タグ

2010年2月5日 | コメントは受け付けていません。 | トラックバックURL |

カテゴリー:システム管理系コマンド

トラックバック&コメント

コメントは受け付けていません。