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子目录 |
注意事项
- 修改这些参数可能会影响系统稳定性,建议在测试环境中先验证
- 大多数修改在重启后会失效,如需永久生效,需要在
/etc/sysctl.conf
中添加相应配置 - 部分参数需要特定内核配置选项支持
- 修改前建议备份原始值