2013-05-09 54 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消息跳转到控制台模式。

相关问题