调试内核模块过程中,kmsg打印信息太多,通过修改/proc/sys/kernel/printk文件内容来控制。

一般通过 echo 0 > /proc/sys/kernel/printk关闭打印信息
或者echo 0       4       0      7  > /proc/sys/kernel/printk

/proc/sys/kernel/printk 内容简介

此文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据分别对应:

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

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

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

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

数值越小,优先级越高

其实这四个值是在kernel/printk.c 中被定义的,如下:

int console_printk[4] = {undefined

DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */

DEFAULT_MESSAGE_LOGLEVEL,       /* default_message_loglevel */

MINIMUM_CONSOLE_LOGLEVEL,     /* minimum_console_loglevel */

DEFAULT_CONSOLE_LOGLEVEL,       /* default_console_loglevel */

};

内核通过printk() 输出的信息具有日志级别,日志级别是通过在printk() 输出的字符串前加一个带尖括号的整数来控制的,如printk("<6>Hello, world!\n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。

首先,printk有8个loglevel,定义在<linux/kernel.h>中,其中数值范围从0到7,数值越小,优先级越高。

#define    KERN_EMERG      "<0>"      系统崩溃

#define    KERN_ALERT       "<1>"必须紧急处理

#define    KERN_CRIT "<2>"      临界条件,严重的硬软件错误

#define    KERN_ERR    "<3>"      报告错误

#define    KERN_WARNING "<4>"      警告

#define    KERN_NOTICE     "<5>"      普通但还是须注意

#define    KERN_INFO "<6>"      信息

#define    KERN_DEBUG      "<7>"      调试信息

从这里也可以看出他们的优先级是数值越小,其紧急和严重程度就越高。

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

/* printk's without a loglevel use this.. */

#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */

了解了上面的这些知识后,我们就应该知道如何手动控制printk打印了。例如,我想屏蔽掉所有的内核printk打印,那么我只需要把第一个数值调到最小值1或者0。

# echo 1       4       1      7 > /proc/sys/kernel/printk

或者

# echo 0       4       0      7 > /proc/sys/kernel/printk

关闭Linux内核打印信息方法相关推荐

  1. 去掉linux内核打印信息的一种方法

    传送门:http://linux.chinaunix.net/techdoc/system/2006/08/07/937667.shtml

  2. linux磁盘信息文件,Linux查看硬盘信息方法总结归纳

    Linux查看硬盘信息方法总结归纳 lsblk lsblk命令用来查看接入到系统中的块设备,默认输出分区.大小.挂载点等信息,一目了然: tlanyan@node1:~$ lsblk sda 8:0 ...

  3. Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取

    Android系统信息获取 之十三:Linux内核版本信息获取 Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Lin ...

  4. Linux内核的编译方法及如何往内核中增加程序

    2019独角兽企业重金招聘Python工程师标准>>> ARM Linux的系统调用实现原理是采用swi软中断从用户(usr)模式陷入管理模式(svc). 内核空间和用户空间这两个名 ...

  5. 分析arm linux启动打印信息

    ===================================================== arm linux系统启动相关文章列表: arm linux系统启动流程 http://bl ...

  6. Android系统信息获取 之十三:Linux内核版本信息获取

    Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Linux版本是什么,而是通过工具或者使用代码的方法去获取我们使用的A ...

  7. Linux内核源代码获取方法

    Linux内核源代码获取方法 什么叫Linux 什么叫Linux内核 Linux内核源代码的获取 什么叫Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UN ...

  8. Android驱动(1)---Ubuntu中为Android系统上编写Linux内核驱动程序实现方法

    Ubuntu中为Android系统上编写Linux内核驱动程序实现方法 本文主要介绍在Ubuntu 上为Android系统编写Linux内核驱动程序, 这里对编写驱动程序做了详细的说明,对研究Andr ...

  9. Linux内核多线程实现方法 —— kthread_create函数

          Linux内核多线程实现方法 -- kthread_create函数 内核经常需要在后台执行一些操作,这种任务就可以通过内核线程(kernle thread)完成独立运行在内核空间的标准进 ...

最新文章

  1. dataTable 从服务器获取数据源的两种表现形式
  2. shell中的函数shell中的数组告警系统需求分析
  3. python语言编程环境-python3编程环境搭建
  4. 【ABAP】销售订单Billing Plan创建
  5. boost::hana::extract用法的测试程序
  6. 【燕郊】【2015-12-31】【知乎】
  7. 04-11 常见接口安全测试工具
  8. 机器学习—关联规则分析之Apriori算法及其python实现
  9. 牛客多校第六场G Is Today Friday?(吉姆拉尔森/蔡勒公式 + 思维)题解
  10. tensorflow两种padding方式
  11. 基于SSM框架的公交车调度管理系统
  12. 联想服务器 硬盘支架 st,联想服务器硬盘阵列离线怎么解决
  13. 微信扫一扫地标识别技术揭秘
  14. ecu根据什么信号对点火提前角_【科普】汽车ECU现状及发展趋势
  15. 1005:地球人口承载力估计(c++)
  16. SJTU 《综合英语一》备考题
  17. fastjson解析接口json格式数据
  18. Educational Codeforces Round 105 (Rated for Div. 2) 题解
  19. Adobe软件大全,你用过几个?
  20. 如何改变premiere pro的安装路径

热门文章

  1. Steam上不去商店和社区的方法 / SteamCommunity 443/80端口被占用报错解决办法
  2. Android实现平板的类股票列表联动
  3. 保研历程(经验分享、保研流程介绍)
  4. Python 爬取京东商品评论 + 词云展示
  5. Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用
  6. opengl 画椭圆_椭圆围城与圆型观光步道
  7. JS 图片压缩上传并在iOS中矫正方向
  8. 安卓一键清理内存_软件| 安卓系统最强悍微信清理软件,一键将所有垃圾文件搜索出来,还可预览删除...
  9. mysql 怎样解锁表_mysql一键解锁表
  10. Creo 4.0 软件安装教程