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
然後使用cat /proc/kmsg來阻塞獲取實時的printk輸出至緩衝區資訊並顯示即可;
syslod程序是用於獲取系統執行時各程序輸出資訊的後臺程序,其會在/var/log下建立message檔案並記錄日誌資訊,當message檔案不斷增大時會對系統造成威脅,到/var空間佔用為100%時則使其他程序對
1. NFC核心資訊檢視方法:
Printk輸出資訊可通過網路輸出這樣可無影響時序,
在/pro/nfc,通過cat /proc/nfc 可看見哪些輸出關閉,使用echo 31 /proc/nfc來開放對應輸出資訊(必須切換到root可操作);
執行cat /proc/kmsg來獲取