CentOS7在终端同步打印内核日志消息

CentOS7在终端打印内核日志消息

在内核编程中,编写一个内核模块并将其插入后,需要实时查看内核模块所打印的消息。一般情况下都是在内核日志中查看。由于内核模块使用的打印函数是内核打印函数printk( ),它会将内核内核的输出信息放到内核日志中,在终端用dmesg命令来查看。但是这样不能做到实时查看,最好时在模块插入后,就能立刻在终端将内核模块的打印消息输出。
CentOS是基于RedHat的,但是RedHat默认是没有/var/log/kern.log这个文件的。所以,需要在/etc/rsyslog.conf中进行配置,来决定系统如何写入。

操作如下

第一步

进入记录系统日志消息的目录下,创建一个kern.log的文件,然后我们会对系统进行配置,将来自内核的消息专门的放到kern.log中,以后终端打印的内核日志消息就是从这个文件中来读取

$ cd /var/log
$ touch kern.log

在这里插入图片描述
然后ls一下,查看kern.log是否已经创建
在这里插入图片描述

第二步

在系统的配置文件中进行配置,要做的动作就是将内核的消息单独导入到刚才创建的kern.log中

$ cd /etc
$ sudo vim rsyslog.conf

在这里插入图片描述
在rsyslog.conf中加入这句话

kern.*		 /var/log/kern.log

在这里插入图片描述

第三步

关闭系统的日志服务

$ service rsyslog stop

第四步

重新打开系统的日志服务

$ service rsyslog start

第五步

查看系统日志服务是否开启,绿色表示服务开启

$ service rsyslog status

在这里插入图片描述

第六步

现在就可以在终端实时打印内核日志消息。在插入内核模块后,模块里的打印消息就可以直接在终端输出了,不需要使用dmesg命令来查看了。
插入模块之前,现在终端输入这句话

$ tail -f /var/log/kern.log &		//终止按Ctrl+c

该命令只对当前终端有效,&表示在当前终端打印
在这里插入图片描述
现在,有一个编译好的hello.ko模块,把它插入内核,在终端实时查看内核模块的输出。
插入模块

$ sudo insmod hello.ko

在这里插入图片描述

卸载模块

$ sudo rmmod hello

在这里插入图片描述

发布了42 篇原创文章 · 获赞 18 · 访问量 7576

猜你喜欢

转载自blog.csdn.net/weixin_44395686/article/details/102551475