printk()打印的信息只有在Alt+Ctrl+F1 ~ F7下才能看到kbd> 控制台。 这些控制台非常不方便调试,因为它们无法回滚。我正在使用 KDE 桌面环境和控制台终端,如何将 printk() 消息重定向到控制台?
最佳答案
printk的语法是
printk ("log level" "message", <arguments>);
内核在文件printk.h中定义了8个日志级别
#define KERN_EMERG "<0>" /* system is unusable*/
#define KERN_ALERT "<1>" /* action must be taken immediately*/
#define KERN_CRIT "<2>" /* critical conditions*/
#define KERN_ERR "<3>" /* error conditions*/
#define KERN_WARNING "<4>" /* warning conditions*/
#define KERN_NOTICE "<5>" /* normal but significant condition*/
#define KERN_INFO "<6>" /* informational*/
#define KERN_DEBUG "<7>" /* debug-level messages*/
每个日志级别对应一个数字,数字越低,消息的重要性越高。
级别有助于决定什么应该在控制台上显示给用户,什么不应该显示。
每个控制台都有日志级别,称为控制台日志级别,任何日志级别编号小于控制台日志级别的消息都会显示在控制台上,其他日志级别编号高于或等于控制台日志的消息级别记录在内核日志(内核缓冲区)中,可以使用命令“dmesg”查看。
可以通过查看文件/proc/sys/kernel/printk 找到控制台日志级别
$ cat /proc/sys/kernel/printk
4 4 1 7
输出中的第一个数字是控制台日志级别,第二个是默认日志级别,第三个是最低日志级别,第四个是最高日志级别。
日志级别 4 对应于 KERN_WARNING。因此,所有日志级别为 3、2、1 和 0 的消息都将显示在屏幕上并记录下来,而日志级别为 4、5、6、7 的消息只会被记录并可以使用“dmesg”查看。
可以通过写入 proc 条目来更改控制台日志级别
$ echo "6" > /proc/sys/kernel/printk
$ cat /proc/sys/kernel/printk
6 4 1 7
现在控制台日志级别设置为 6,即 KERN_INFO。
在这里你想打印出每条消息,所以你应该将你的控制台级别设置为最高数字“8”
echo "8" > /proc/sys/kernel/printk
tail -f /var/log/kern.log &
或
cat /proc/kmsg & (Android Environment)
关于linux - 如何在控制台中显示 printk() 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903915/