如果在系统命令行终端输入dmesg命令,就会看见系统内核的日志输出信息。但是通常系统设定的是默认的日志级别不是信息最全的,需要管理员根据实际需要进行调整,这时候就可以手动设置内核参数,主要是以下2个文件,
/proc/sys/kernel/printk 和 /proc/sys/kernel/kptr_restrict 。
(1) 文件 /proc/sys/kernel/printk
如果切换到 /proc/sys/kernel/ 目录,查看printk文件,将会看到以下内容。
---------------------------------------------------------------
[root@localhost kernel]# cat printk
7 4 1 7
---------------------------------------------------------------
这些数字的含义解释如下。
第一个参数 7对应内核的 console_loglevel 变量,表示优先级高于7的消息才会被输出到控制台;
第二个参数 4对应内核的 default_message_loglevel 变量,表示默认的printk消息优先级别;
第三个参数1对应内核的 minimum_console_loglevel 变量,表示可识别的最高优先级;
第四个参数7对应内核的 default_console_loglevel 变量,表示默认的控制台优先级;
以上所述的优先级,最高是0,数字越大,优先级越低。
这些参数可根据不同场景来调整,例如只需打印内核的严重错误信息,过滤其余低优先级日志,那么可设置第一个参数和第三个参数为0,参见下文所示例子。
-----------------------------------------------------
[root@localhost kernel]# echo 0 4 0 7 > printk
[root@localhost kernel]# cat printk
0 4 0 7
-----------------------------------------------------
(2) 文件/proc/sys/kernel/kptr_restrict
对于有些环境,查看内存相关的信息,例如/proc/vmalloc时,会发现指针变量的值被隐藏
这通常是因为相关显示逻辑被 kptr_restrict控制。此时 kptr_restrict 被设为0,如果设置为1,参考下方指令,则可以重新显示出指针变量的值。
-------------------------------------------------
[root@localhost kernel]# echo 1 > kptr_restrict
-------------------------------------------------