【问题标题】:How to override settings in /etc/sysctl.conf CentOS 7?如何覆盖 /etc/sysctl.conf CentOS 7 中的设置?
【发布时间】:2020-07-19 23:44:49
【问题描述】:

我试图在 Cent OS 7.5 上使用“/etc/sysctl.conf”文件设置某些内核参数。我将“/etc/sysctl.conf”文件复制到“/etc/sysctl.d/sysctl.conf”中,并使用“sysctl --system”更新了某些参数和重新加载设置。 但是我看到 "/etc/sysctl.conf" 中的参数覆盖了 (/etc/sysctl.d/sysctl.conf) 中的参数。 (当我执行命令时,我也可以看到相同的结果,即首先应用来自 /etc/sysctl.d/sysctl.conf 的设置,然后应用来自“/etc/sysctl.conf”的设置,这会导致问题。)

但是根据手册页,sysctl --system 应该忽略“/etc/sysctl.conf”中的设置,因为我在“/etc/sysctl.d/sysctl.conf”中创建了同名文件,该文件被读取第一的。 (参考:http://man7.org/linux/man-pages/man8/sysctl.8.html)。

    --system
              Load settings from all system configuration files. Files are
              read from directories in the following list in given order
              from top to bottom.  ***Once a file of a given filename is
              loaded, any file of the same name in subsequent directories is
              ignored.***
              /run/sysctl.d/*.conf
              /etc/sysctl.d/*.conf
              /usr/local/lib/sysctl.d/*.conf
              /usr/lib/sysctl.d/*.conf
              /lib/sysctl.d/*.conf
              /etc/sysctl.conf ```

【问题讨论】:

    标签: linux-kernel centos centos7 sysctl


    【解决方案1】:

    手册页与源代码sysctl.c 不一致。根据PreloadSystem() 函数的源代码,它处理各种 sysctl.d 搜索目录中的 *.conf 文件(跳过那些已经看到的 *.conf 文件名,如手册页中所述)。然后它会处理默认的 /etc/sysctl.conf 文件(如果存在),而不检查是否已经看到 sysctl.conf 文件名。

    综上所述,/etc/sysctl.conf 中的设置不能被 /etc/sysctl.d/ 和其他 sysctl.d 目录中的 *.conf 文件覆盖,因为 /etc/sysctl.conf 中的设置是总是最后申请。

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 1970-01-01
      • 2021-01-23
      • 2014-04-16
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      相关资源
      最近更新 更多