sysctl命令可以_实时_(runtime)查看和修改linux 内核参数。这个命令可以在大多数发行版本找到, 另外内核参数,也可以通过procfs 文件系统,在 /proc/sys/kernel下 进行查看和修改。
查看指定参数
# sysctl kernel.sched_child_runs_firstkernel.sched_child_runs_first = 0
查看所有参数
# sysctl -a |moresysctl: reading key "net.ipv6.conf.all.stable_secret"sysctl: reading key "net.ipv6.conf.default.stable_secret"abi.vsyscall32 = 1crypto.fips_enabled = 0debug.exception-trace = 1debug.kprobes-optimization = 1
修改指定参数
# sysctl -w kernel.sched_child_runs_first=1 kernel.sched_child_runs_first = 1
注意等号前后不能有空格
修改含多个值的参数
# sysctl -w net.ipv4.ip_local_port_range="1025 60999"net.ipv4.ip_local_port_range = 1025 60999
通过修改procfs 文件系统实现
修改指定参数
# echo 1 > /proc/sys/kernel/sched_child_runs_first# sysctl kernel.sched_child_runs_firstkernel.sched_child_runs_first = 1
修改含多个值的参数
# echo "32768 60999" > /proc/sys/net/ipv4/ip_local_port_range# sysctl net.ipv4.ip_local_port_rangenet.ipv4.ip_local_port_range = 32768 60999
持久化设置
以上修改是临时性的,机器重启后失效,如果要持久化保存,可修改/etc/sysctl.conf
# cat /etc/sysctl.confkernel.sched_child_runs_first=1
修改完毕后,使用以下命令使得参数立即生效
# sysctl -pkernel.sched_child_runs_first = 1
机器重启后该设置仍然有效。
Cenos/RHEL7 下的设置
Cenos/RHEL7版本与之前版本略有不通, 需要在/etc/sysctl.d目录下创建一个文件, 由于验证使用的虚拟机使用Cenos7可以看到,上面修改的/etc/sysctl.conf文件, 在 /etc/sysctl.d下有个叫99-sysctl.conf 的文件链接指向了他。
lrwxrwxrwx. 1 root root 14 Dec 16 2018 99-sysctl.conf -> ../sysctl.conf
下面是/etc/sysctl.conf中的说明
# cat /etc/sysctl.conf# sysctl settings are defined through files in# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.## Vendors settings live in /usr/lib/sysctl.d/.# To override a whole file, create a new file with the same in# /etc/sysctl.d/ and put new settings there. To override# only specific settings, add a file with a lexically later# name in /etc/sysctl.d/ and put new settings there.## For more information, see sysctl.conf(5) and sysctl.d(5).
参考以上说明,可以在/etc/sysctl.d下自定义一个文件, 由于文件是按照顺序执行的, 文件名前面增加个序号, 比如/etc/sysctl.d/01-custom.conf:(验证前可以先手工清除之前/etc/sysctl.conf中的配置)
#cat /etc/sysctl.d/01-custom.confkernel.sched_child_runs_first=1
重启后生效,如果要立即生效可以执行以下命令
# sysctl -p /etc/sysctl.d/01-custom.confkernel.sched_child_runs_first = 1