sysctl -a 不包括 log_buf_len

sysctl -a 不包括 log_buf_len

我希望通过 sysctl 检查 log_buf_len 的值,但sysctl -a没有显示它,为什么以及是否有其他方法来检查其值

答案1

的值log_buf_len一劳永逸地设置当配置和构建内核时或使用参数引导时log_buf_len=NNN: 之后就无法更改了。sysctl通常关心你所关心的事情log_buf_len正在运行的内核发生变化:这可能就是不包括在内的原因。

您只需通过 grep 遍历内核配置文件即可找到配置的值LOG_BUF_SHIFT(假设它可用)。例如,在我的 Fedora 29 系统上,我这样做

$ grep CONFIG_LOG_BUF_SHIFT /boot/config-5.2.11-100.fc29.x86_64 
CONFIG_LOG_BUF_SHIFT=18

log_buf_len等于 2^18 那么除非它已通过启动命令行设置。

如果是这种情况(或者如果您无权访问配置文件),那么我知道的唯一方法就是gdb检查正在运行的内核,但我已经很多年没有这样做了,而且我真的可以'不需要记住所有步骤 - 主要困难是获取正在运行的内核的调试符号。其他人将不得不提供这些指令(或者可能提供一个更简单的方法;例如,可以编写一个内核模块,在加载时打印出该值 - 有很多关于编写简单内核模块的教程,例如这里:该教程可以追溯到 2.6 内核时代,今天的情况可能有所不同,但我(天真地?)并不认为事情会有很大不同)。

相关内容