签到成功

知道了

CNDBA社区CNDBA社区

Linux 7 中 /etc/sysctl.conf 的位置变化

2018-08-26 13:45 9982 1 原创 Linux
作者: dave

在Linux 系统中,我们通常把一些配置写到/etc/sysctl.conf文件,但在Linux 7中,这个规则稍微发生了变化。

https://www.cndba.cn/dave/article/2966

[root@18c sysctl.d]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.5 (Maipo)
[root@18c sysctl.d]# uname -a
Linux 18c 3.10.0-862.el7.x86_64 #1 SMP Wed Mar 21 18:14:51 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@18c sysctl.d]#

[root@18c ~]# 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).

注意这里的文件面规则发生了改变,前面加了一个数字:

https://www.cndba.cn/dave/article/2966
https://www.cndba.cn/dave/article/2966
https://www.cndba.cn/dave/article/2966
https://www.cndba.cn/dave/article/2966

[root@18c sysctl.d]# pwd
/etc/sysctl.d
[root@18c sysctl.d]# ls
99-sysctl.conf
[root@18c sysctl.d]#

我们可以查看帮助,对这块的解释:

https://www.cndba.cn/dave/article/2966

[root@18c sysctl.d]# man sysctl.d
SYSCTL.D(5)                                             sysctl.d                                             SYSCTL.D(5)

NAME
       sysctl.d - Configure kernel parameters at boot

SYNOPSIS
       /etc/sysctl.d/*.conf

       /run/sysctl.d/*.conf

       /usr/lib/sysctl.d/*.conf

DESCRIPTION
       At boot, systemd-sysctl.service(8) reads configuration files from the above directories to configure sysctl(8)
       kernel parameters.

CONFIGURATION FORMAT
       The configuration files contain a list of variable assignments, separated by newlines. Empty lines and lines
       whose first non-whitespace character is "#" or ";" are ignored.

       Note that either "/" or "."  may be used as separators within sysctl variable names. If the first separator is a
       slash, remaining slashes and dots are left intact. If the first separator is a dot, dots and slashes are
       interchanged.  "kernel.domainname=foo" and "kernel/domainname=foo" are equivalent and will cause "foo" to be
       written to /proc/sys/kernel/domainname. Either "net.ipv4.conf.enp3s0/200.forwarding" or
       "net/ipv4/conf/enp3s0.200/forwarding" may be used to refer to /proc/sys/net/ipv4/conf/enp3s0.200/forwarding.
 Manual page sysctl.d(5) line 1 (press h for help or q to quit)...skipping...
SYSCTL.D(5)                                             sysctl.d                                             SYSCTL.D(5)

NAME
       sysctl.d - Configure kernel parameters at boot

SYNOPSIS
       /etc/sysctl.d/*.conf

       /run/sysctl.d/*.conf

       /usr/lib/sysctl.d/*.conf

DESCRIPTION
       At boot, systemd-sysctl.service(8) reads configuration files from the above directories to configure sysctl(8)
       kernel parameters.

CONFIGURATION FORMAT
       The configuration files contain a list of variable assignments, separated by newlines. Empty lines and lines
       whose first non-whitespace character is "#" or ";" are ignored.

       Note that either "/" or "."  may be used as separators within sysctl variable names. If the first separator is a
       slash, remaining slashes and dots are left intact. If the first separator is a dot, dots and slashes are
       interchanged.  "kernel.domainname=foo" and "kernel/domainname=foo" are equivalent and will cause "foo" to be
       written to /proc/sys/kernel/domainname. Either "net.ipv4.conf.enp3s0/200.forwarding" or
       "net/ipv4/conf/enp3s0.200/forwarding" may be used to refer to /proc/sys/net/ipv4/conf/enp3s0.200/forwarding.

       The settings configured with sysctl.d files will be applied early on boot. The network interface-specific options
       will also be applied individually for each network interface as it shows up in the system. (More specifically,
       net.ipv4.conf.*, net.ipv6.conf.*, net.ipv4.neigh.*  and net.ipv6.neigh.*).

       Many sysctl parameters only become available when certain kernel modules are loaded. Modules are usually loaded
       on demand, e.g. when certain hardware is plugged in or network brought up. This means that systemd-
       sysctl.service(8) which runs during early boot will not configure such parameters if they become available after
       it has run. To set such parameters, it is recommended to add an udev(7) rule to set those parameters when they
       become available. Alternatively, a slightly simpler and less efficient option is to add the module to modules-
       load.d(5), causing it to be loaded statically before sysctl settings are applied (see example below).

CONFIGURATION DIRECTORIES AND PRECEDENCE
       Configuration files are read from directories in /etc/, /run/, and /usr/lib/, in order of precedence. Each
       configuration file in these configuration directories shall be named in the style of filename.conf. Files in
       /etc/ override files with the same name in /run/ and /usr/lib/. Files in /run/ override files with the same name
       in /usr/lib/.

       Packages should install their configuration files in /usr/lib/. Files in /etc/ are reserved for the local
       administrator, who may use this logic to override the configuration files installed by vendor packages. All
       configuration files are sorted by their filename in lexicographic order, regardless of which of the directories
       they reside in. If multiple files specify the same option, the entry in the file with the lexicographically
       latest name will take precedence. It is recommended to prefix all filenames with a two-digit number and a dash,
       to simplify the ordering of the files.

       If the administrator wants to disable a configuration file supplied by the vendor, the recommended way is to
       place a symlink to /dev/null in the configuration directory in /etc/, with the same filename as the vendor
       configuration file.

从Linux官方帮助的解释看,这种两位数字加横线的方式仅用于排序,没有其他含义,也就说不按这种格式来也没有问题。 https://www.cndba.cn/dave/article/2966https://www.cndba.cn/dave/article/2966

[root@18c sysctl.d]# mv 99-sysctl.conf sysctl.conf
[root@18c sysctl.d]# cat sysctl.conf 

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 30

然后用root执行sysctl -p让修改生效:https://www.cndba.cn/dave/article/2966https://www.cndba.cn/dave/article/2966

[root@18c sysctl.d]# sysctl -p
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 30

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2091
    原创
  • 2
    翻译
  • 503
    转载
  • 176
    评论
  • 访问:5042900次
  • 积分:3762
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ