sysctl 通过读写 /proc/sys/ 虚拟文件动态调整内核参数,临时生效用 -w 选项,永久生效需写入 /etc/sysctl.d/ 或 /etc/sysctl.conf 并执行 sysctl --system 加载,修改后须用 sysctl 或 cat /proc/sys/ 验证实际值。

Linux 用 sysctl 调整核心参数,本质是读写 /proc/sys/ 下的虚拟文件。它不重启就能改内核行为,但必须分清“临时生效”和“永久生效”,否则服务一重启就退回默认值。
直接改运行时参数(临时)
用 -w 选项立即生效,适合测试或应急:
- 查看当前值:
sysctl net.ipv4.tcp_tw_reuse - 修改值:
sudo sysctl -w net.ipv4.tcp_tw_reuse=1 - 批量修改:
sudo sysctl -w net.core.somaxconn=65535 vm.swappiness=10
这类操作只存在内存里,重启即丢失,不能用于生产长期配置。
让修改长期有效(永久)
必须把参数写进配置文件,并显式加载:
- 推荐方式:写入
/etc/sysctl.d/99-custom.conf(模块化、优先级高、不冲突) - 传统方式:追加到
/etc/sysctl.conf(兼容性好,但部分新系统默认不优先加载) - 写法统一:每行一个
参数名=值,例如:net.core.somaxconn = 65535 vm.swappiness = 10 fs.file-max = 1000000
- 加载生效:执行
sudo sysctl --system(自动加载/usr/lib/sysctl.d/→/etc/sysctl.d/→/etc/sysctl.conf,后加载覆盖前)
只改文件不执行加载命令,参数不会生效;只执行 sysctl -p 而没写对路径,也可能漏加载。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
验证是否真生效
别只看配置文件内容,要查内核当前实际值:
-
sysctl net.ipv4.tcp_tw_reuse(返回实时值) -
cat /proc/sys/net/ipv4/tcp_tw_reuse(等价,但sysctl更规范) - 对网络参数,还可结合
ss -s或压测观察效果(如net.ipv4.tcp_syncookies=1是否真触发 SYN Cookie)
关键注意事项
- 不同参数影响范围不同:
net.*涉及连接建立与回收,vm.*控制内存分配倾向,fs.*管理文件句柄上限,需按业务类型选配 - 参数之间有依赖:调大
somaxconn时,应用监听 socket 的backlog值也要同步设够,否则无效 - 安全类参数慎改:如
net.ipv4.conf.all.rp_filter=1在多网卡或 Kubernetes 环境易误丢包,建议先试=2 - 部分参数只读:
kernel.sysrq等若sysctl -w报Permission denied,说明内核编译时禁用了运行时修改
基本上就这些。

















