我们在linux底层驱动或者kernel中调用的printk函数其作用是将printk的内容输出到控制台,但printk实质是将需要输出的内容写入底层环形输出数据缓冲区,linux根据控制将数据输出到控制台;

基于此,我们可以在linux系统下手动关闭printk的信息输出到控制台(目的是即需要输出信息,但又不想通过频繁的串口输出中断输出到控制台,频繁串口中断将影响其他驱动实时性要求),此时使用 echo 4 > /proc/sys/kernel/printk关闭printk信息输出至控制台(但printk信息任然将保存在缓冲区中);

Echo 10 >/proc/sys/kernel/printk表示所有信息均输出;

Echo 4 >/proc/sys/kernel/printk表示仅输出系统严重错误信息;故可频闭默认数据级别以及警告信息输出等而达到关闭绝大部分printk输出信息的目的。

 

查看printk输出所在环行缓冲区信息方法1

使用ps查看是否有klogd进程,如果有,klogd进程会将printk输出信息从环形缓冲区中抓取保存在/var/log/kernel文件中,使用cat kernel即可查看所有printk输出信息;此方法仍然是将信息通过串口输出到控制台,只是可以滞后输出,避免影像实时性强的驱动,但无法实时查看printk输出;

 

方法2

通过网络实时查看printk输出信息,此方法先使用 echo 4 > /proc/sys/kernel/printk来关闭printk信息输出至控制台,然后通过telnet登陆到终端,此时需要先杀死方法1中的klogd进程(因为klogd会先将printk输出缓冲区数据拿走导致其他进程无法取到输出缓冲区数据):killall klogd;

然后使用cat /proc/kmsg来阻塞获取实时的printk输出至缓冲区信息并显示即可;

 

 

syslod进程是用于获取系统运行时各进程输出信息的后台进程,其会在/var/log下创建message文件并记录日志信息,当message文件不断增大时会对系统造成威胁,到/var空间占用为100%时则使其他进程对/var文件夹的读写失败从而导致其他进程执行失败!目前出现的为PPPD进程拨号至5000次必然失败,原因是/var文件系统被message文件写满而导致PPPD的拨号脚本无法再写入/var/run/ppp中而导致拨号失败!

 

1.     NFC内核信息查看方法:

Printk输出信息可通过网络输出这样可无影响时序,

/pro/nfc,通过cat /proc/nfc 可看见哪些输出关闭,使用echo  31 /proc/nfc来开放对应输出信息(必须切换到root可操作)

执行cat /proc/kmsg来获取

 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐