即将在终端上打印KERNEL消息

时间:2013-04-22 09:11:33

标签: linux linux-kernel device-driver kernel-module kernel

根据手册页,它告诉我,如果消息的日志级别的优先级高于默认设置的日志级别,那么它将被打印在终端上。但是当我使用像

这样的句子时
printk(KERN_ALERT " MESSAGE ")

我在终端上打印消息时遇到问题。由于默认优先级设置为4,KERN_ALERT优先级为1,因此更高。

那么,如何在终端上打印消息?

3 个答案:

答案 0 :(得分:4)

它应该将消息打印到控制台,而不是终端。有时控制台和终端看起来是一样的,但事实并非如此。编辑 / proc / sys / kernel / printk 以设置在控制台中打印的最低优先级

答案 1 :(得分:3)

我知道这并不完全回答你的问题,但就像我在评论中所说的那样,让printk登录到控制台通常不是一个好主意。这是我建议的替代方案,应该足以满足您的目的。

由于您希望将其用于调试目的,您只需打开一个新终端并执行以下命令:

tail -f /var/log/messages

tail -f /var/log/dmesg

等。 tail -f将打印文件中的最后一条消息,但会一直等待更新。只要文件中写入了更多行,tail -f就会将它们写入控制台。

无论您是使用此方法还是直接打印到控制台,您可能还有兴趣定义一个调用printk的宏,并且在调试模式下也会放一个小msleep以确保如果发生崩溃,日志会显示在屏幕上。这是这样做的:

set_current_state(TASK_INTERRUPTIBLE);
msleep(/* amount in milliseconds */);

答案 2 :(得分:0)

我在最初在主机系统上开发骨架驱动程序时面临同样的问题。每次我都要用“dmesg”命令检查。

我必须编辑/ proc / sys / kernel / printk。

在终端上使用窗口管理器获取消息,例如广告KED和Gnome 运行“tail -f /var/log/kern.log& amp;”在终端上获取消息。

它在Ubuntu系统中帮助了我。希望它会有所帮助:)