searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

控制内核日志打印

2023-11-28 03:30:59
23
0

如果在系统命令行终端输入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

-------------------------------------------------

 

 

0条评论
0 / 1000
彭乾恒
2文章数
1粉丝数
彭乾恒
2 文章 | 1 粉丝
彭乾恒
2文章数
1粉丝数
彭乾恒
2 文章 | 1 粉丝
原创

控制内核日志打印

2023-11-28 03:30:59
23
0

如果在系统命令行终端输入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

-------------------------------------------------

 

 

文章来自个人专栏
Linux内核调试
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0