1. 程式人生 > >linux下關閉printk列印資訊以及通過網路檢視方法

linux下關閉printk列印資訊以及通過網路檢視方法

我們在linux底層驅動或者kernel中呼叫的printk函式其作用是將printk的內容輸出到控制檯,但printk實質是將需要輸出的內容寫入底層環形輸出資料緩衝區,linux根據控制將資料輸出到控制檯;

基於此,我們可以在linux系統下手動關閉printk的資訊輸出到控制檯(目的是即需要輸出資訊,但又不想通過頻繁的串列埠輸出中斷輸出到控制檯,頻繁串列埠中斷將影響其他驅動實時性要求),此時使用 echo 4 > /proc/sys/kernel/printk關閉printk資訊輸出至控制檯(但printk資訊任然將儲存在緩衝區中);

Echo 10 >/proc/sys/kernel/printk

表示所有資訊均輸出;

Echo 4 >/proc/sys/kernel/printk表示僅輸出系統嚴重錯誤資訊;故可頻閉預設資料級別以及警告資訊輸出等而達到關閉絕大部分printk輸出資訊的目的。

檢視printk輸出所在環行緩衝區資訊方法1

使用ps檢視是否有klogd程序,如果有,klogd程序會將printk輸出資訊從環形緩衝區中抓取儲存在/var/log/kernel檔案中,使用cat kernel即可檢視所有printk輸出資訊;此方法仍然是將資訊通過串列埠輸出到控制檯,只是可以滯後輸出,避免影像實時性強的驅動,但無法實時檢視printk輸出;

方法2

通過網路實時檢視printk

輸出資訊,此方法先使用 echo 4 > /proc/sys/kernel/printk來關閉printk資訊輸出至控制檯,然後通過telnet登陸到終端,此時需要先殺死方法1中的klogd程序(因為klogd會先將printk輸出緩衝區資料拿走導致其他程序無法取到輸出緩衝區資料):killall klogd;

然後使用cat /proc/kmsg來阻塞獲取實時的printk輸出至緩衝區資訊並顯示即可;

syslod程序是用於獲取系統執行時各程序輸出資訊的後臺程序,其會在/var/log下建立message檔案並記錄日誌資訊,當message檔案不斷增大時會對系統造成威脅,到/var空間佔用為100%時則使其他程序對

/var資料夾的讀寫失敗從而導致其他程序執行失敗!目前出現的為PPPD程序撥號至5000次必然失敗,原因是/var檔案系統被message檔案寫滿而導致PPPD的撥號指令碼無法再寫入/var/run/ppp中而導致撥號失敗!

1.     NFC核心資訊檢視方法:

Printk輸出資訊可通過網路輸出這樣可無影響時序,

/pro/nfc,通過cat /proc/nfc 可看見哪些輸出關閉,使用echo  31 /proc/nfc來開放對應輸出資訊(必須切換到root可操作)

執行cat /proc/kmsg來獲取