sysctl命令可以实时(runtime)查看和修改linux 内核参数。这个命令可以在大多数发行版本找到, 另外内核参数,也可以通过procfs 文件系统,在 /proc/sys/kernel下 进行查看和修改。
查看指定参数
# sysctl kernel.sched_child_runs_first
kernel.sched_child_runs_first = 0
查看所有参数
# sysctl -a |more
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
abi.vsyscall32 = 1
crypto.fips_enabled = 0
debug.exception-trace = 1
debug.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_first
kernel.sched_child_runs_first = 1
修改含多个值的参数
# echo "32768 60999" > /proc/sys/net/ipv4/ip_local_port_range
# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 60999
持久化设置
以上修改是临时性的,机器重启后失效,如果要持久化保存,可修改/etc/sysctl.conf
# cat /etc/sysctl.conf
kernel.sched_child_runs_first=1
修改完毕后,使用以下命令使得参数立即生效
# sysctl -p
kernel.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.conf
kernel.sched_child_runs_first=1
重启后生效,如果要立即生效可以执行以下命令
# sysctl -p /etc/sysctl.d/01-custom.conf
kernel.sched_child_runs_first = 1
参考:
sysctl(8) – Linux manual page – man7.org
Be First to Comment