Linux kernel 如何覆盖/etc/sysctl.conf CentOS 7中的设置?
我试图使用CentOS7.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”中的设置,这会导致问题。)Linux kernel 如何覆盖/etc/sysctl.conf CentOS 7中的设置?,linux-kernel,centos,centos7,sysctl,Linux Kernel,Centos,Centos7,Sysctl,我试图使用CentOS7.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中的设置
但根据sysctl的手册页,系统应该忽略“/etc/sysctl.conf”中的设置,因为我在“/etc/sysctl.d/sysctl.conf”中创建了一个同名文件,该文件首先读取。(参考:)
手册页与源代码不一致。根据
preload system()
函数的源代码,它处理各种sysctl.d搜索目录中的*.conf文件(跳过那些已经看到的*.conf文件名,如手册页中所述)。然后,它处理默认的/etc/sysctl.conf文件(如果存在),而不检查sysctl.conf文件名是否已被看到
总之,/etc/sysctl.d/和其他sysctl.d目录中的*.conf文件不能覆盖/etc/sysctl.conf中的设置,因为/etc/sysctl.conf中的设置总是最后应用
--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 ```