linux printk函数学习
2013-09-30 22:08
197 查看
printk与printf的区别在于:
printk运行在kernel space,而printf运行在user space。
所以kernel打印log使用printk,而应用程序打印log使用printf。
在printk.h中定义了8个级别的log level,
#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>"
通过如下命令,可以查看系统当前设定的printk log level。
从结果中我们看到,系统当前设定的log level为0,所以不会
打印任何log到console上。
sh-# cat /proc/sys/kernel/printk
0 4 1 7
此时要查看系统打印的log的话,有两种方法:
1. 使用dmesg命令将ring buffer中的内容保存起来;
sh-# dmesg > /tmp_fs/dmesg.txt
2. 将/proc/kmsg里面的内容保存起来
sh-# cat /proc/kmsg > /tmp_fs/dmesg.txt
有了上面这两种办法,再也不会因为一不小心没有保存控制台上的log而烦恼了。
那printk level应该如何设定呢?这里有两种办法:
1. 使用dmesg命令进行设定,
sh-# cat /proc/sys/kernel/printk
0 4 1 7
sh-# dmesg -n 7
sh-# cat /proc/sys/kernel/printk
7 4 1 7
2. 直接更改printk配置文件,
sh-# echo 1 > /proc/sys/kernel/printk
sh-# cat /proc/sys/kernel/printk
1 4 1 7
因为linux系统过程中会打印较多的系统log,所以一定要在系统启动前就设定好printk level。
刚通过实验验证了,printk level只会影响到kernel log是否输出到控制台上;
但是无论printk level如何,kernel log都会保存到ring buffer中。
问题:
将printk level设定为KERN_DEBUG,这样开机过程中会输出大量的log,
会不会影响到系统开机性能呢?
需要通过实验进行验证。
printk运行在kernel space,而printf运行在user space。
所以kernel打印log使用printk,而应用程序打印log使用printf。
在printk.h中定义了8个级别的log level,
#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>"
通过如下命令,可以查看系统当前设定的printk log level。
从结果中我们看到,系统当前设定的log level为0,所以不会
打印任何log到console上。
sh-# cat /proc/sys/kernel/printk
0 4 1 7
此时要查看系统打印的log的话,有两种方法:
1. 使用dmesg命令将ring buffer中的内容保存起来;
sh-# dmesg > /tmp_fs/dmesg.txt
2. 将/proc/kmsg里面的内容保存起来
sh-# cat /proc/kmsg > /tmp_fs/dmesg.txt
有了上面这两种办法,再也不会因为一不小心没有保存控制台上的log而烦恼了。
那printk level应该如何设定呢?这里有两种办法:
1. 使用dmesg命令进行设定,
sh-# cat /proc/sys/kernel/printk
0 4 1 7
sh-# dmesg -n 7
sh-# cat /proc/sys/kernel/printk
7 4 1 7
2. 直接更改printk配置文件,
sh-# echo 1 > /proc/sys/kernel/printk
sh-# cat /proc/sys/kernel/printk
1 4 1 7
因为linux系统过程中会打印较多的系统log,所以一定要在系统启动前就设定好printk level。
刚通过实验验证了,printk level只会影响到kernel log是否输出到控制台上;
但是无论printk level如何,kernel log都会保存到ring buffer中。
问题:
将printk level设定为KERN_DEBUG,这样开机过程中会输出大量的log,
会不会影响到系统开机性能呢?
需要通过实验进行验证。
相关文章推荐
- Linux内核的ioctl函数学习2 - linux系统ioctl使用示例
- linux下ioctl函数学习
- Linux-Shell脚本编程-学习-8-函数
- (cc)2.6版本Linux上替换系统调用函数实现隐藏文件学习
- 【Linux 系统编程】shell 脚本基础学习之函数(五)
- 《Linux C一站式学习》第三章 简单的函数
- linux 函数学习--kzalloc()
- Linux C语言开发函数学习 之一 ntohl()
- 网络设备发送队列相关数据结构及其创建函数 (linux网络子系统学习 第十节 )
- Linux内核的ioctl函数学习2 - linux系统ioctl使用示例
- linux学习---常用时间函数
- Linux netfilter 学习笔记 之六 ip层netfilter的filter表的创建及其hook函数分析
- 《Linux C一站式学习》第三章 简单的函数
- linux下ioctl函数学习
- Linux netfilter 学习笔记 之二 ip 层netfilter的hook 注册以及执行hook函数的概要分析
- 【TINY4412】LINUX学习笔记:(1)Printk调试
- 小松之LINUX驱动学习笔记之模块间函数调用通讯
- 【经典转载】Linux进程学习系列之五 等待进程结束wait()和waitpid()函数
- Linux学习之shell脚本——函数
- linux学习——main()函数的用法