sysctl 查询设置内核参数

如何查询单个值

# sysctl kernel.shmmax
kernel.shmmax = 68719476736

或者:

# sysctl -n kernel.shmmax
68719476736

示例中的值和文件/proc/sys/kernel/shmmax 有关联:

# cat /proc/sys/kernel/shmmax
68719476736

查询所有内核设置

要查询所有的内核参数,可以允许下面的命令 sysctl -a

# sysctl -a | more
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 4000000
kernel.sched_latency_ns = 20000000
kernel.sched_wakeup_granularity_ns = 4000000
kernel.sched_tunable_scaling = 1

还可以使用正则表达式 如下:

# sysctl -a | grep ^kernel.s[h,e]m
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
kernel.sem = 250        32000   100     128

临时设置内核参数

可以使用命令 sysctl -w 如:

# sysctl -w kernel.sysrq=0
kernel.sysrq = 0

值的格式是多个或者有特殊字符时 用引号括起来 如:

# sysctl -w net.ipv4.ip_local_port_range="1025 65535"

或者直接将参数 写入到 对应参数的 procfs 文件中 :如:


# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo "1025 65535" > /proc/sys/net/ipv4/ip_local_port_range

永久设置内核参数

用以上临时方式修改的内核参数,在系统重启时会丢失 。想要永久修改内核参数,要用到内核参数配置文件 /etc/sysctl.conf , 配置语法使用键值对,等号分隔 如: component.parameter=value ,要使配置的值生效,可以执行命令 sysctl -p
如:

# vi /etc/sysctl.conf
[component].[parameter]=[value]

# sysctl -n kernel.ctrl-alt-del
0
# echo "kernel.ctrl-alt-del=1" >> /etc/sysctl.conf
# sysctl -p
kernel.ctrl-alt-del = 1

在ubuntu centos RHEL 中永久设置内核参数

在这些系统设置与旧版本有所不同 ,可以创建一个文件在目录:
/etc/sysctl.d/ 文件名以后缀conf 结尾即可 ,系统会在启动时按照文件名顺序加载改文件夹中配置文件。

# cat /etc/sysctl.d/01-custom.conf
net.ipv4.ip_forward=1
net.ipv4.ip_local_port_range="1025 65535"

要使新创建的配置文件立即生效而已使用命令 sysctl -p filename

# sysctl -p /etc/sysctl.d/01-custom.conf

翻译how-to-query-and-modify-kernel-parameters-using-sysctl-immediately-and-persistently-in-centos-rhel

posted @ 2020-11-23 16:23  地菜  阅读(1396)  评论(0编辑  收藏  举报