内核调试目录文件详解 Linux /proc/sys/kernel

Linux /proc/sys/kernel 目录文件详解

/proc/sys/kernel 目录包含了Linux内核运行时参数的设置,这些参数可以动态调整系统行为而无需重新启动系统。

重要文件详解

1. core_pattern

作用:控制程序崩溃时核心转储文件的生成方式和位置。

示例

# 查看当前设置
cat /proc/sys/kernel/core_pattern

# 设置核心转储到指定目录
echo "/var/crash/core.%e.%p" > /proc/sys/kernel/core_pattern

2. pid_max

作用:设置系统可分配的最大进程ID号。

示例

# 查看当前最大PID值
cat /proc/sys/kernel/pid_max

# 设置最大PID为32768
echo 32768 > /proc/sys/kernel/pid_max

3. threads-max

作用:控制系统允许的最大线程数。

示例

# 查看当前最大线程数
cat /proc/sys/kernel/threads-max

# 设置最大线程数为65536
echo 65536 > /proc/sys/kernel/threads-max

4. panic

作用:控制系统在panic后自动重启的等待时间(秒),0表示不重启。

示例

# 设置panic后10秒自动重启
echo 10 > /proc/sys/kernel/panic

5. sysrq

作用:启用/禁用SysRq键功能,用于系统调试和紧急恢复。

示例

# 启用所有SysRq功能
echo 1 > /proc/sys/kernel/sysrq

# 仅启用部分功能
echo 176 > /proc/sys/kernel/sysrq  # 176=0xB0=10110000

6. randomize_va_space

作用:控制ASLR(地址空间布局随机化)级别。

示例

# 查看当前ASLR设置
cat /proc/sys/kernel/randomize_va_space

# 完全启用ASLR
echo 2 > /proc/sys/kernel/randomize_va_space

7. msgmnb, msgmni, msgmax

作用:控制System V消息队列的参数。

示例

# 设置单个消息队列最大字节数
echo 65536 > /proc/sys/kernel/msgmnb

# 设置系统最大消息队列数
echo 1024 > /proc/sys/kernel/msgmni

# 设置单个消息最大大小
echo 8192 > /proc/sys/kernel/msgmax

8. shmall, shmmax, shmmni

作用:控制共享内存的参数。

示例

# 设置共享内存总页数
echo 2097152 > /proc/sys/kernel/shmall  # 8GB (假设页大小为4KB)

# 设置单个共享内存段最大大小
echo 68719476736 > /proc/sys/kernel/shmmax  # 64GB

# 设置系统最大共享内存段数
echo 4096 > /proc/sys/kernel/shmmni

9. printk

作用:控制内核日志输出级别。

示例

# 查看当前日志级别设置
cat /proc/sys/kernel/printk

# 设置控制台日志级别为4
echo "4 4 1 7" > /proc/sys/kernel/printk

10. perf_event_paranoid

作用:控制性能监控事件的访问权限。

示例

# 允许非root用户访问性能监控
echo 0 > /proc/sys/kernel/perf_event_paranoid

功能模块汇总表格

功能模块主要文件作用描述
核心转储core_pattern, core_uses_pid控制程序崩溃时的核心转储行为
进程管理pid_max, threads-max控制系统进程/线程数量限制
系统恢复panic, panic_on_oops控制系统崩溃和恢复行为
系统调试sysrq, ftrace_enabled提供系统调试和诊断功能
安全randomize_va_space, kptr_restrict控制地址随机化和内核指针暴露
IPC通信msg*, shm*, sem控制System V IPC参数
调度sched_*控制CPU调度器行为
性能监控perf_event_*控制性能监控子系统
日志printk*, dmesg_restrict控制内核日志输出
内存shm*, overcommit*控制共享内存和内存分配策略
网络(不在本目录)网络相关参数通常在net子目录
模块modules_disabled, modprobe控制内核模块加载行为
时间(不在本目录)时间相关参数通常在sys子目录

注意事项

  1. 修改这些参数可能会影响系统稳定性,建议在测试环境中先验证
  2. 大多数修改在重启后会失效,如需永久生效,需要在/etc/sysctl.conf中添加相应配置
  3. 部分参数需要特定内核配置选项支持
  4. 修改前建议备份原始值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值