1. Linux : /bin/dmesg
  2. Shared Library /bin/dmesg : libc.so.6 => /lib/libc.so.6 (0x4001d000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
  3. /bin/dmesg : 意義 : dmesg是用來檢查或控制kernel ring buffer。這個程式可以幫助使用者印出他們的boot messages, 而不必手動copy,只需打dmesg > boot.messages,就可以把boot messages輸出到檔案裡,並可寄給任何 可幫他們的程式debug的人。

概要 : dmesg [ -c ] [ -n level ] [ -s bufsize ] OPTIONS :

-c

-s bufsize
-n level
印完後清除ring buffer的內容
用一個bufsize的buffer來查詢kernel的ring buffer。預設值是8196(這符合
2.0.33和2.1.103預設的kernel syslog buffer size)。如果你設定比預設值
大的kernel buffer,這個option可讓你看到整個的buffer。
設定在console被執行的訊息記錄的level。例如, -n 1是要預防所有的messages
(期望是恐慌的訊息)出現在console上。所有level的messages仍會被寫到/proc/kmsg,
所以syslogd(8)仍可用來確切地控制出現的kernel messages。當使用了-n這個option,
dmesg將不會印出或清除kernel ring buffer。
當這兩個option都被使用到,只有在命令列的最後一個option才會有作用。



  1. /bin/dmesg : dmesg 印出kernel ring buffer內容 要加入option使用的話, 必須是root身份。 dmesg -c 則印出message後, 清除ring buffer內容 dmesg -s 9000 印出全部ring buffer內容,因9000>8196(default) dmesg -n 1 不在console印出message, 但仍寫到/proc/kmsg裡 dmesg -s 8196 -n 1 則不在console印出message demsg -n 2 | 8 都不會印出message在console, 9以後為不合法的參數

  1. 公用程式名稱: dmesg

  2. 所在系統:

RedHat/Linux

  1. 路徑:

/usr/dmesg

  1. shared library:

$ldd /bin/dmesg

libc.so.6 =>/lib/libc.so.6
/lib/ld-linux.so.2 =>/lib/ld-lunux.so.2

  1. 語法:

dmesg [-c] [-n level] [-s bufsize]

  1. 主要用途說明:

dmesg主要是用來列印或是控制kernel ring buffer。

這個程式可以幫助使用者列印出他們的開機訊息。 使用者可以用下列的指令而不用自己用手copy-paste開機訊息。

$dmesg > ./boot.msg(如此一來開機訊息便存到boot.msg裡面了)

若使用者碰到有關系統方面的問題時可以把這個boot.msg email給有能力幫你 debug的人。

  1. 各種參數用法說明

-c 開機訊息印出來後把ring buffer清乾淨

(要有root權限才可執行)

-s bufsize

當你向kernel ring buffer 要求輸出時,用這個選項可以設定buffer的size ,預設的系統buffer大小是8196k(跟kernel2.0.33和2.0.103 kernel syslog buffer size相同),如果你輸入的kernel buffer size大過這個選項可用的s ize時,將會視為你用到全部的buffer。

-n level

將會設定能夠在console上面看到的message level(每一句kernel丟出的 message都 會assign 一個level值 ),例如 -n 1的話將會prevent所有除了panic message的 其他kernel訊息出現在console上。但是所有level的message仍會被寫入/proc/kmsg? 因此syslogd(8)仍然可以用來精確地控制kernel message出現的地方。 當我們用-n選項時,dmesg將不會印出或是清除kernel ring buffer。

當兩個選項(options)被用到時,只有指令行的最後一個選項是有效的。

  1. 使用範例: [djc@djc<20:27:54> ~]$dmesg

Linux version 2.2.17-4CLE (root@candyz) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 Thu Sep 14 17:21:59 CST 2000 Detected 499950 kHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 996.15 BogoMIPS Memory: 127320k/131008k available (1080k kernel code, 416k reserved, 1696k data, 76k init)
[deleted..]


[djc@djc<20:27:54> ~]$su
Password:
[root@djc djc]#dmesg -c
Linux version 2.2.17-4CLE (root@candyz) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 Thu Sep 14 17:21:59 CST 2000 Detected 499950 kHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 996.15 BogoMIPS Memory: 127320k/131008k available (1080k kernel code, 416k reserved, 1696k data, 76k init)
[deleted..]

[root@djc djc]#dmesg
[root@djc djc]#
//此時將不會有開機訊息出現,因為buffer已被清空


[root@djc djc]# dmesg -n 1
[root@djc djc]#
//此時kernel將只會把panic message丟到console上,其他message都不會出現 //此時也不會印出開機訊息

  1. 其他 man syslogd(8) man klogd(8)