终端下更改printk打印级别

如何去更改printk的打印级别?

1、查看当前控制台的打印级别

# cat /proc/sys/kernel/printk

 

该文件有4个数字值,它们根据日志记录消息的重要性,定义将其发送到何处,上面显示的4个数据分别对应如下:

控制台日志级别:优先级高于该值得消息将被打印到到控制台;

默认的消息日志级别:将用该优先级来打印没有优先级的消息;

最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级);

默认的控制台日志级别:控制台日志级别的缺省值。

以上的数值设置,数值越小,优先级越高。

上面这个4个值的定义在kernel/printk.c,如下:

 

内核通过printk()输出的信息具有日志级别,日志级别是通过在printk()输出的字符串前带一个尖括号的整数来控制的,例如:printk(“<6>Hello World!\n”);。内核中提供了8种不同的日志级别,在linux/kernel_levels.h中有相应的宏定义,如下:

 

因此,printk()可以这样来使用:

printk(KERN_INFO”Hello World\n”);

当未指定日志级别的printk()采用默认的级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏定义为整数4。

如果想要在内核启动过程中打印少的信息,可以根据自己的需要在kernel/printk.c中修改以上的数值,重新编译后,烧写内核镜像。

2、修改printk的打印级别

在系统的终端处修改打印级别,例如,屏蔽所有的内核printk打印,那么只需要将第一个数值调到最小值1或0即可

# echo 1       4       1      7 > /proc/sys/kernel/printk
or
# echo 0       4       0      7 > /proc/sys/kernel/printk
posted @   liangliangge  阅读(1909)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示