如何通过sysctl获取临时内核参数并将变更设置为持久化?
查找sysctl临时变更的内核参数并实现持久化
一、找出临时变更的参数
临时通过sysctl命令修改的内核参数不会写入配置文件,重启后会丢失。要找出这些参数,只需对比当前生效的所有参数和配置文件中定义的参数:
- 导出当前系统所有生效的sysctl参数:
sysctl -a > current_sysctl.conf - 导出所有配置文件中定义的参数(涵盖
/etc/sysctl.conf和/etc/sysctl.d/*.conf):sysctl -p --system > configured_sysctl.conf - 对比两个文件,差异部分就是临时变更的参数:
(diff -B -w configured_sysctl.conf current_sysctl.conf-B忽略空行,-w忽略空格差异,让对比结果更精准)
二、将临时参数持久化
找到临时参数后,按以下步骤持久化:
选择配置文件:
- 推荐在
/etc/sysctl.d/目录下新建一个优先级较高的自定义配置文件(比如99-custom.conf,数字越大加载越晚,优先级越高),避免修改默认的/etc/sysctl.conf - 示例命令创建文件:
touch /etc/sysctl.d/99-custom.conf
- 推荐在
添加参数:
用编辑器打开新建的配置文件,按参数名 = 值的格式添加临时变更的参数,比如:net.ipv4.ip_forward = 1 vm.swappiness = 10让配置立即生效:
执行以下命令,无需重启系统即可加载新配置:sysctl --system或者单独加载自定义文件:
sysctl -p /etc/sysctl.d/99-custom.conf验证持久化效果:
- 用
sysctl 参数名查看参数是否保持设置值 - 重启服务器后再次执行上述命令,确认参数未恢复默认值
- 用
内容的提问来源于stack exchange,提问作者Shreeram Silwal
相关产品推荐
相关产品推荐

