【问题标题】:printk - showing in message log but not in terminal for any kernel log levelprintk - 显示在消息日志中,但不在终端中显示任何内核日志级别
【发布时间】:2010-01-31 02:59:27
【问题描述】:

我正在做一些内核修改,并试图让 printk 将信息输出回控制台。我通过它传递了任何内核日志级别,即使是最高日志级别也没有正确地在控制台上得到任何响应。

我查了一下,printk 的当前日志配置是 4 4 1 7。

每次都正确打印到日志。我可以使用 dmesg |少并看到它附加到日志中。但我无法使用 printk 将其正确返回到控制台。

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

我已经从 gnome-terminal 和 Windows 中的 putty 尝试了 SSH。也没有改变任何事情。仍然在服务器的日志中显示 printk,但不在我的控制台上。

有什么方法可以将它发送到控制台?鉴于我已经尝试了每个日志级别并且没有工作,可能会出现什么问题?谢谢!

【问题讨论】:

标签: linux-kernel kernel


【解决方案1】:

我相信 prink 只记录到物理控制台,如果你想通过任意 ttys 监控内核输出,那么你将需要使用 tail 来监控 syslog 写入的文件,或者像 xconsole 这样的应用程序专门监控 /dev/console 的消息。

【讨论】:

  • 你能进一步详细说明tail吗?我在其他地方看到过它,但不确定如何通过 c 代码调用它。基本上,我在 linux 中创建了一个新的系统调用,并使用用户应用程序来调用系统调用。系统调用使用 printk 来输出。进行系统调用后,是否可以通过我的应用程序调用您提到的tail函数?再次感谢。
  • tail 不是一个函数,它是一个 shell 命令。尝试打开另一个连接(或屏幕窗口,或者你正在这样做),并使用'tail -f /var/log/dmesg'
【解决方案2】:

只是为了确保您处于初始化级别 3(文本模式),不是吗?如果你已经运行 startx 并且在图形模式下工作,你将不会在终端上看到任何东西。

【讨论】:

    【解决方案3】:

    我相信syslog 的某些变体无需进行内核修改即可支持此功能,可能通过登录到 /dev/console。您尝试修改内核以执行此操作有什么特别的原因吗?我想有一个更简单的方法。

    【讨论】:

    • 我正在 linux 中进行一个新的系统调用,它的部分工作是将信息输出到控制台。我正在使用 printk 输出信息,这就是我卡住的地方。 printk 需要发送到控制台,因为我无法访问常规 printf
    【解决方案4】:

    一些发行版修补了 printk,因此它不会出现(Red Hat 是第一个,Ubuntu 也是如此) - 你可能会遇到这个问题。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        尝试使用

        dmesg -wH &
        

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

        dmesg -wH | grep ERR &
        

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

        printk(KERN_EMERG "ERROR!\n");
        

        我从我的驱动程序中打印出来的

        【讨论】:

          猜你喜欢
          • 2018-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-13
          • 1970-01-01
          • 1970-01-01
          • 2022-06-13
          • 1970-01-01
          相关资源
          最近更新 更多