有没有一种方法可以将由printk消息构建的输出管道传输到控制台上的grep



我创建了一个实用程序,可以使用printk打印输出。例如

printmsg.c:
void main() {
printk(KERN_DEBUG "Message alert id:XXXX!n");
printk(KERN_DEBUG "Message alert id:YYYY!n");
return;
}

如果在系统上运行此实用程序,它会在控制台上打印如下消息

#./printmsg
Message alert id:XXXX!
Message alert id:YYYY!

然而,如果我运行这个应用程序将输出管道传输到grep,它就不起作用。

#./printmsg | grep XXXX
Message alert id:XXXX!
Message alert id:YYYY!

我知道printk消息到内核日志缓冲区和dmesg来打印日志缓冲区。使用dmesg选项在stdoutput上打印输出。

然而,我正在寻找一个选项,当实用程序运行并在控制台上转储输出时,可以立即将输出管道传输到grep。

限制:printk不能在这里妥协。

您需要以这种方式构建您的shell脚本:

#./printmsg 2>&1| grep XXXX

这是因为(很有可能(printk函数向STDERR发送消息,而不是STDOUT

相关内容

  • 没有找到相关文章

最新更新