printk - 显示在消息日志中,但不显示在任何内核日志级别的终端中

时间:2010-01-31 02:59:27

标签: linux-kernel kernel

我正在做一些内核修改,并试图让printk将信息输出回控制台。我使用它传递任何内核日志级别,并且即使是最高的日志级别也无法在控制台上正确获得任何响应。

我检查过,printk的当前日志配置是4 4 1 7。

每次都能正确打印日志。我可以使用dmesg |减去并将其附加到日志中。但我无法使用printk将其恢复到正确的控制台。

我不确定这是否重要,但我使用SSH连接到存在修改内核的远程计算机。

我在Windows中尝试过来自gnome-terminal和putty的SSH。既不改变一件事。仍然在服务器的日志中显示printk,但不在我的控制台上。

任何方式将它送到控制台?鉴于我已经尝试过每个日志级别而没有工作,可能会出现什么问题?谢谢!

6 个答案:

答案 0 :(得分:3)

我认为prink只记录到物理控制台,如果你想通过任意ttys监视内核输出,那么你需要使用tail监视syslog写入的文件,或者xconsole等应用程序。专门监视/ dev / console以获取消息。

答案 1 :(得分:0)

我相信syslog的某些变体支持这一点而不进行内核修改,可能是通过登录到/ dev / console。您是否有任何特殊原因试图修改内核来执行此操作?我想有更简单的方法。

答案 2 :(得分:0)

有些发行版修补了printk所以它没有显示出来(Red Hat是第一个,Ubuntu也是这样做的) - 你可能正在点击它。

答案 3 :(得分:0)

如果是用于调试 - 只需拖尾/var/log/messages即可。如果您需要内核模块的稳定输出 - 在/proc下创建一个字符设备或文件,并从那里读取用户空间进程。

答案 4 :(得分:0)

只是为了确保,你在初级3级(文本模式)不是吗?如果您运行了startx并且正在以图形模式工作,那么您将无法在终端上看到任何内容。

答案 5 :(得分:0)

尝试使用

dmesg -wH &

强制打印到dmesg 的所有内核消息(以及诸如Ctrl + Alt + F1之类的虚拟终端,具体取决于/ proc / sys / kernel / printk日志级别和消息级别) ),也将出现在您的SSH或GUI控制台上:Konsole,Terminal或您正在使用的任何设备!而且,如果您只需要监视特定消息,则:

dmesg -wH | grep ERR &

我正在使用它来监视“ ERROR”消息,例如

printk(KERN_EMERG "ERROR!\n");

我从司机那里打印了