我在哪里可以找到sysctl.conf
基于最后一场比赛的官方文档?
因此,文件中有两个条目/etc/sysctl.conf
:
vm.swappiness=10
vm.swappiness=11
哪个会赢?最后一个?如果/etc/sysctl.d
目录中有文件会怎样?
我在哪里可以找到sysctl.conf
基于最后一场比赛的官方文档?
因此,文件中有两个条目/etc/sysctl.conf
:
vm.swappiness=10
vm.swappiness=11
哪个会赢?最后一个?如果/etc/sysctl.d
目录中有文件会怎样?
我不认为有任何这样的官方文件。
sysctl
条目由procps
systemd 处理;但是两个项目的文档都没有解决如何在同一个配置文件中处理条目。简短的版本是最后一个条目
sysctl.conf
获胜,即使存在其他文件(在/etc/sysctl.d
或其他地方),无论使用哪个系统加载设置。procps
要了解如何
procps
处理条目,我们需要查看sysctl
. 这表明在不知道较早条目的情况下处理了后面的条目,因此最后一个获胜(查看Preload
函数)。当在命令行上给出多个配置文件时,它们会按顺序处理,如手册页中所述:该选项使事情变得更加复杂
--system
,但至少记录在案:文档不是很完整。如上所述,给定文件中的条目按顺序应用,并覆盖之前赋予相同设置的任何值。此外,查看
PreloadSystem
函数显示文件按名称顺序处理,并且/etc/sysctl.conf
是无条件处理的(即,较早目录中的同名文件不会覆盖它)。系统
systemd 有自己的
sysctl
处理程序,它记录在手册sysctl.d
页中;有一个关于优先级的部分:同样,单个配置文件中后面的条目会覆盖早期的条目。
以更实际的方式进行此断言:
首先要做的事情是:如果您在条目
sysctl
上加上前缀,则不会应用值(如您所说,“联机帮助页是大声笑”,但您似乎没有认真阅读它们)。而且,测试这一点很容易:将以下内容放在您的末尾sysctl.conf
/etc/sysctl.conf
我在这里使用swappines,因为我知道它是一个低影响的sysctl,根据您的系统负载(大多数发行版的默认值是60),几乎没有差异值。通过键入
sysctl -p /etc/sysctl.conf
(manpage)仅应用此文件。仔细检查值sysctl -a
瞧。
既然您知道文件是通过自上而下的方法读取的,那么只需阅读
sysctl.d
手册页即可确定在您的系统中传播 sysctl 文件的优先级是什么。正如@Stephen Kitt 的回答已经解释的那样,我不会在这里重复这个信息。此外,此
sysctl.d
目录优先级将取决于您使用的发行版是否基于 systemd...万一将来有人发现了这个,而您的系统没有 procps(RHEL、CentOS 等),您会发现“systemctl --system”和“systemd-sysctl.service”以不同的顺序应用目录,因此请注意按文件名覆盖的文件的顺序。对于由 sysctl 覆盖,应用最后读取的值,因此文件名的顺序和目录的顺序很重要。