嵌入式驱动学习第二周——Linux内核打印

前言

   这篇博客来聊一聊Linux内核打印。

   嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦!

1. dmesg指令——查看内核打印信息

1.1 dmesg基本使用

   dmesg是Linux系统重查看内核日志的使用工具,允许查看系统内核的输出消息,包括引导信息,硬件检测,设备驱动和系统错误等,通过dmesg可以追踪系统启动过程的事件,排查故障。

   我们在启动linux系统的时候会有一连串的信息打印出来,如果我们后续想要再看一次启动的信息,就可以用dmesg回显一下,内核将打印的信息存储到ring buffer中,我使用的是MobaXterm,在其中的控制台输入dmesg查看ring buffer中存储的启动信息:

在这里插入图片描述

   回车后就会显示如下的信息,就会打印出启动的信息:

在这里插入图片描述

   后面可以跟一些参数,常用的参数如下所示:

-C,清除内核环形缓冲区(ring buffer)
-c ,读取并清除所有消息
-T,显示时间戳

   使用dmesg -c打印内核信息后,再次输入dmesg就读不到了,因为被清除了

在这里插入图片描述

1.2 dmesg进行关键词查找

   dmesg可以与grep组合使用,查找关键词,比如我们要查找与cpu相关的信息,可以使用如下命令,不区分大小写查找CPU相关信息:

dmesg | grep -i cpu

在这里插入图片描述

1.3 实时打印最后N行

   实时监控查看日志末尾N行可以用以下指令,查看末尾的N行,结果是一致显示的,每隔2s显示一次

watch “dmesg | tail -5

在这里插入图片描述

1.4 kmsg

   内核把所有的打印信息会输出到循环缓冲区log_buf,为了方便在用户控件读取内核打印信息,Linux内核驱动将该循环缓冲区映射到/proc目录下的文件节点kmsg中,通过cat指令读取log Buffer时可以不断等待新的log,所以访问/pro/kmsg的方式适合长时间读取log。

   使用以下指令读取kmsg,没有新的内核打印信息时会阻塞。

cat /proc/kmsg

   如下就是处于阻塞状态:
在这里插入图片描述

2. printk函数

查看内核打印等级

   内核日志的打印由相应的打印等级来控制,可以通过调整内核打印等级来控制打印日志的输出:

cat /proc/sys/kernel/printk

在这里插入图片描述

   这四个数字分别对应 console_logleveldefault_message_loglevelminimum_console_logleveldefault_console_loglevel

终端打印类型对应类型说明
console_loglevel只有当printk打印消息的log优先级高于console_loglevel时,才能输出到终端上
default_message_loglevelprintk打印消息时默认的log等级
minimum_console_loglevelconsole_loglevel 可以被设置的最小值
default_console_loglevelconsole_loglevel的缺省值

   printk的四个等级意味着,只有优先级高于KERN_DEBUG(7)的打印消息才能输出到终端

调整内核打印等级

   通过echo指令进行修改,如下所示,将当前的日志级别修改为4,最后通过cat查看发现第一个数变成了4:

echo 4 > /proc/sys/kernel/printk

在这里插入图片描述

   也可以一次性改变多个值,如下所示:

echo 4 2 0 6 > /proc/sys/kernel/printk

在这里插入图片描述

   这种方法重启内核后会重新变为 7 4 1 7,也就是说重启内核后需要重新修改

使用方法

   printk函数就类似于printf函数,不过printf函数用于应用层,是用户空间的打印函数,printk是内核空间的打印函数。

   可以利用printk函数打印一些内核的提示信息。

printk("led driver and device has matched!\r\n");

问题

   显示invalid option

在这里插入图片描述

   有大佬知道这个问题是为什么嘛,求指导 T_T

参考资料

[1] 深入了解Linux下的dmesg指令:查看系统内核日志的利器

[2] Linux命令之dmesg命令

  • 26
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值