只是關於內核級別的printk()函數的一個簡短問題,如果我打電話給消息將打印到哪裏?(我在最新內核下載的i386 arch上使用Ubuntu)printk()在哪裏打印?
不能找到它在任何地方,
如果有人也可以指向我的某種手冊的printk()函數正確的方向,這將是偉大的!
只是關於內核級別的printk()函數的一個簡短問題,如果我打電話給消息將打印到哪裏?(我在最新內核下載的i386 arch上使用Ubuntu)printk()在哪裏打印?
不能找到它在任何地方,
如果有人也可以指向我的某種手冊的printk()函數正確的方向,這將是偉大的!
dmesg
應顯示printk
消息。
printk(9)
手冊頁有一個非常它的一點點信息。總之,它被髮送到日誌緩衝區,syslog守護程序可以在該日誌緩衝區中進行處理。如果日誌級別足夠高,它也會發送到控制檯(請參閱該位的dmesg(1)
)。
printk
消息進入內核日誌消息緩衝區,根據系統配置可以以各種方式公開。 shell命令dmesg
將顯示它們,並且它們也應該被syslog
守護程序複製到/var/log
中的文件中。可以讓他們登錄到串行控制檯或文本模式的虛擬終端,但我不記得如何非正式。
如果您已經在內核模塊中放置了一些printk()
語句進行調試並嘗試捕獲打印輸出時的輸出,那麼您要查找的是klogd
。執行man klogd
以獲取更多扣留和選項。
下面是klogd
我編碼而回,以緩解一些快速調試疼痛包裝腳本:
#!/bin/bash
function bashtrap()
{
echo
echo -n "[+] stopping klogd ... "
pids=`ps aux | grep klogd | awk '{print $2}'`
for pid in $pids
do
kill SIGTERM $pid 2> /dev/null
done
echo "done"
if [ $1 ]
then
exit;
fi
}
sync
bashtrap
klogd -x -f - -n -c 8 2>&1 1 | tee klog.txt & klog_pid=$!;
echo "[+] klogd started"
echo "[+] press ctrl+c to exit ... $klog_pid"
sync
trap "bashtrap 1" SIGINT
while [ 1 ]
do
sleep 3
echo -n "."
done
ps aux | grep klogd
查找/dev/kmsg
您的系統上。
在系統日誌中發現它,謝謝 – molleman 2010-10-27 19:23:44