要将linux内核的带级别控制的printk内容打印出来,在命令行输入 dmesg -n 8 就将所有级别的信息都打印出来。

Linux命令:dmesg  功能说明:显示开机信息。

语 法:dmesg [-cn][-s ]

补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

参 数:

-c 显示信息后,清除ring buffer中的内容。

-s 预设置为8196,刚好等于ring buffer的大小。

-n 设置记录信息的层级。

printk()使用说明

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

#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 */

#define KERN_INFO       "<6>"    /* informational */

#define KERN_DEBUG      "<7>"    /* debug-level messages */

#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 */

#define KERN_INFO       "<6>"    /* informational */

#define KERN_DEBUG      "<7>"    /* debug-level messages */

所以 printk() 可以这样用:printk(KERN_INFO "Hello, world! ");。

未指定日志级别的 printk() 采用的默认级别是 DEFAULT_MESSAGE_LOGLEVEL,这个宏在 kernel/printk.c 中被定义为整数 4,即对应KERN_WARNING。

在 /proc/sys/kernel/printk 会显示4个数值(可由 echo 修改),分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。当 printk() 中的消息日志级别小于当前控制台日志级别时,printk 的信息(要有符)就会在控制台上显示。但无论当前控制台日志级别是何值,通过 /proc/kmsg (或使用dmesg)总能查看。另外如果配置好并运行了 syslogd 或 klogd,没有在控制台上显示的 printk 的信息也会追加到 /var/log/messages.log 中。

通过读写/proc/sys/kernel/printk文件可读取和修改控制台的日志级别。查看这个文件的方法如下:

#cat /proc/sys/kernel/printk

6   4  1   7

上面显示的4个数据分别对应控制台日志级别、默认的消息日志级别、最低的控制台日志级别和默认的控制台日志级别。

可用下面的命令设置当前日志级别:

# echo 8 > /proc/sys/kernel/printk

分析与总结:

Printf在终端显示,printk()函数为内核空间里边的信息打印函数,就像c编程时用的printf()函数一样,专供内核中的信息展示用,他没有调用printf()的原因是在编译内核时还没有c的库函数可以供调用。

在linux中,可以像使用printf()一样使用printk(),也可以加上优先级使用,比如如下:

printk(KERN_ALERT "LCD light exit.\n");

printk()函数有八个优先级定义,如下:

#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 */

当printk()优先级低于int console_loglevel,信息将直接打印在你的终端上(x 环境下好像不行)。如果同时 syslogd和klogd都在运行,信息也同时添加在文件 /var/log/messages,而不管是否显示在控制台上与否。我们使用像 KERN_ALERT这样的高优先级,来确保printk()将信息输出到控制台而不是只是添加到日志文件中。当你编写真正的实用的模块时,你应该针对可能遇到的情况使用合适的优先级。

/var/log/messages里的信息可以使用 cat  /var/log/messages 进行查看。

控制台的日志级别可以使用    cat /peoc/sys/kernel/printk 查看。

控制台的日志级别可以用    echo 3 > /peoc/sys/kernel/printk  改变(3为要写入的值,可改变)。

Linux查看dmesg日志,Linux中的Printk与dmesg功能相关推荐

  1. linux查看告警日志,linux怎么查看硬件告警

    想知道怎么查看Linux中的硬件告警吗?下面是学习啦小编带来的关于linux怎么查看硬件告警的内容,欢迎阅读! Linux查看硬件告警方法一: Linux系统拥有非常灵活和强大的日志功能,可以保存几乎 ...

  2. linux查看docker日志,linux:有效使用docker logs查看日志

    在开发基于Docker的应用程序时,能够在日志中查找特定信息并将此数据保存到文件中可以加快故障排除和调试过程.以下是使用日志选项,tail和grep在docker容器的日志数据中查找所需内容的一些提示 ...

  3. linux 查看usb日志,Linux中显示系统中USB信息的lsusb命令

    Linux中显示系统中USB信息的lsusb命令 通用串行总线(USB)被设计成为连接计算机外设的标准,如键盘.鼠标.打印机.数码相机.便携式媒体播放器.磁盘和网络适配器等等 - 来源:Wikiped ...

  4. linux 查看入侵日志,linux入侵日志记录清除

    web服务的访问日志 查看日志路径信息: nginx -t nginx会去测试你的配置文件nginx.conf的语法,并告诉你配置文件是否写的正确,同时也告诉了你配置文件的路径: nginx: the ...

  5. linux 查看电池日志,linux终端查看笔记本电池电量

    系统archlinux,搜索电池相关的软件有下面这些 extra/xfce4-battery-plugin 1.0.5-4 (xfce4-goodies) A battery monitor plug ...

  6. Linux查看log日志命令总结

    @Linux查看日志 Linux查看log日志命令总结 企业项目都运行在Linux环境,熟悉Linux环境下的日志查看结合远程调试端口及时排查程序bug,是后端程序员需掌握的必备技能. 1,动态实时查 ...

  7. linux查看生产日志命令(cat、grep、tail、sed)

    linux查看生产日志命令 1.cat 2.grep 3.tail 4.sed 1.cat 查看log.log前200行 cat log.log | head -n 200 查看test.log倒数2 ...

  8. Linux查看服务器日志

    Linux查看服务器日志 第一种:查看实时变化的日志 # 默认最后10行 tail -f catalina.out # 显示最后20行 tail -n 20 catalina.out # 从第5行开始 ...

  9. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全

    /proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...

  10. 通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)

    linux查看用户密码(linux查看用户密码命令) 2020-05-15 13:18:30 共10个回答 1.用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/s ...

最新文章

  1. 阿里员工吐槽:我在阿里工作五年,面试一个小公司竟然挂了
  2. C++无符号整数的反转位的实现算法(附完整源码)
  3. signature=35e01da53254eb12b5fc3c020f572e6a,Signature Analyzer Use NXP MCU
  4. ssh连接出现:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  5. python vtk mousemove_VTK的视点研究之三维空间漫游(转载)
  6. 电子商务网站常用源码介绍
  7. Google 搜索老矣,尚能饭否?
  8. 排序 —— 希尔排序(Shell sort)
  9. 【python】使用in判断元素是否在列表(list)中,如何提升搜索效率?
  10. css子元素选择父元素的实现
  11. 通过IIS发布网站教程【十分钟完成一个网站发布】
  12. 埃默里大学计算机值得读吗,埃默里大学计算机科学-生物统计学硕士研究生怎么样?好不好...
  13. SpringSecurity认证基本原理与认证2种方式
  14. java offset什么意思_java – “offset或count可能接近-1 1”这是什么意思
  15. 姿态估计1-07:FSA-Net(头部姿态估算)-源码无死角讲解(2)-网络框架整体结构分析
  16. 简述html的文档基本结构,【简答题】简述 HTML 文档的基本结构。
  17. 辛钦大数定理(揭示了均值和数学期望的关系)
  18. 如何删除设备和驱动器中的百度网盘
  19. 从画家到黑客:成功在于特立独行,不在于随波逐流
  20. 上行OFDMA接入机制(UL-OFDMA)

热门文章

  1. CVPR 2021|三维视觉相关论文汇总
  2. 车道线检测:几何约束联合车道分割和车道边界检测
  3. 多目标跟踪算法FairMOT深度解析
  4. mysql查看数据文件ibdata_如何从 ibdata文件 恢复 MySQL 数据库
  5. Science | 智能计算揭示前生命化学网络中合成的连接、出现和自我再生
  6. 第二十三课.Kaggle交易预测
  7. php 使用netstat -an,netstat -an 查看端口
  8. matlab语言实验二,实验二 MATLAB语言基础
  9. Gut:刘星吟/王益超/曹爱华等揭示孤独症患儿肠道菌群发育轨迹图谱(赵方庆点评)...
  10. Science:中英合作揭示拟南芥三萜化合物特异调控根系微生物组