如何覆盖 /etc/sysctl.conf CentOS 7 中的设置?
How to override settings in /etc/sysctl.conf CentOS 7?
我试图在 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 ```
手册页与源代码不一致sysctl.c。根据 PreloadSystem()
函数的源代码,它处理各种 sysctl.d 搜索目录中的 *.conf 文件(跳过那些已经看到的 *.conf 文件名,如手册页所述).然后它处理默认的 /etc/sysctl.conf 文件(如果它存在)而不检查是否已经看到 sysctl.conf 文件名。
综上所述,/etc/sysctl.conf中的设置不能被/etc/sysctl.d/和其他sysctl.d目录下的*.conf文件覆盖,因为/etc/sysctl.conf中的设置=16=].conf 总是最后应用。
我试图在 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 ```
手册页与源代码不一致sysctl.c。根据 PreloadSystem()
函数的源代码,它处理各种 sysctl.d 搜索目录中的 *.conf 文件(跳过那些已经看到的 *.conf 文件名,如手册页所述).然后它处理默认的 /etc/sysctl.conf 文件(如果它存在)而不检查是否已经看到 sysctl.conf 文件名。
综上所述,/etc/sysctl.conf中的设置不能被/etc/sysctl.d/和其他sysctl.d目录下的*.conf文件覆盖,因为/etc/sysctl.conf中的设置=16=].conf 总是最后应用。