2013-05-09 78 views
1

我已經把一些printk聲明Linux內核裏面這樣記錄內核日誌同時運行的應用程序

printk(KERN_DEBUG " Hello from Kernel "); 

和我有興趣來記錄這個命令的輸出,同時運行a.out應用,如:

cp /var/log/dmesg oldLog.txt 
./a.out 
cp /var/log/dmesg newLog.txt 
diff oldLog.txt newLog.txt 

但似乎這種方法不起作用。 newLog.txt和oldLog.txt都是相同的。不過,我可以在dmesg命令輸出中觀察"Hello from Kernel"。你知道一個簡單的方法來捕獲這樣的日誌嗎?

我的第二個問題是關於loglevel。我在printk聲明中使用KERN_DEBUG,但即使我設置了echo 1 > /proc/sys/kernel/printk,它仍然在dmesg命令輸出中輸出Hello from kernel

回答

1

1)printk調試語句總是與dmesg命令一起顯示,與loglevel的設置無關。調試消息可以在/ var/log/messages中找到。 2)Loglevel設置爲獲取打印在控制檯上的調試消息。即使您設置了最高優先級日誌級別(KERN_EMERG)以在控制檯上打印調試消息,但如果X服務器(GUI)正在運行,它將不會顯示在控制檯中。爲了使控制檯上的高優先級printk消息跳轉到控制檯模式。