sysctl 被分成这么多配置文件有什么原因吗?

sysctl 被分成这么多配置文件有什么原因吗?

sysctl将这么多的配置文件分成多个目录是否有一个合理的理由?

我不能删除所有sysctl.d配置文件并将所有内容放进去,有什么原因吗/etc/sysctl.conf

我的系统正在运行 Xubuntu 20.04 和sysctl.d目录:

  • /etc/sysctl.d/
  • /usr/lib/sysctl.d/

但是必须有其他带有sysctl键的配置文件,因为如果我运行:

# sudo sysctl --system

它输出我的自定义文件中的所有键/etc/sysctl.conf以及来自各种文件的所有键sysctl.d

但是,如果我运行:

# sudo sysctl -a

它输出大量未明确设置的键(无论如何由我设置)。

sysctl我想我确实需要知道如何找到将密钥加载到内核的所有配置文件。

man sysctlsysctl仅列出配置文件的总共 6 个可能位置:

  • /run/sysctl.d/但它并不存在。
  • /etc/sysctl.d/其中包含由操作系统生成的 8 个配置文件和99-sysctl.conf指向 的符号链接/etc/sysctl.conf
  • /usr/local/lib/sysctl.d/但它并不存在。
  • /usr/lib/sysctl.d/其中包含了OS设置的3个文件。
  • /lib/sysctl.d//usr/lib/sysctl.d/尽管它没有显示符号链接,但其含义是一样的。
  • /etc/sysctl.conf我大量修改过的sysctl文件。

我查看了所有单独的配置文件,它们甚至占不到sysctl加载到内核的键的一半。我知道有些应用程序可以设置sysctl键,但一定有其他配置文件将所有这些键加载到内核中。

除了sysctl命令选项之外,手册页没有任何其他数据。

答案1

/run/sysctl.d/但它并不存在。

/run是临时的,其中的更改在重启后会丢失。因此,插入配置文件/run用于修改当前启动,但不会在重启后保留这些更改。

/etc/sysctl.d/其中包含由操作系统生成的 8 个配置文件和99-sysctl.conf指向 的符号链接/etc/sysctl.conf

这是保存允许管理员修改的软件包配置的地方。dpkg当您的编辑与软件包更新冲突时会通知您。

/usr/local/lib/sysctl.d/但它并不存在。

/usr/local是供管理员使用的,软件包不会在那里做任何事情。如果需要,您应该创建该目录。

/usr/lib/sysctl.d/其中包含了OS设置的3个文件。

中的文件/usr/lib不应由管理员修改。软件包更新将覆盖此处的更改。

/lib/sysctl.d//usr/lib/sysctl.d/尽管它没有显示符号链接,但其含义是一样的。

自从合并/usr、、、等是指向 中相应目录的符号/bin链接。/lib/usr

/etc/sysctl.conf我大量修改过的sysctl文件。

保留它是为了向后兼容,因为人们(以及脚本和其他工具)仍然会期待它。


当您可以添加或删除包含所需内容的文件时,以事务方式修改配置是最容易的,而不是使用正则表达式或其他任何方式来修改配置文件中间的一行,而配置文件中充满了谁知道是什么。也就是说,允许插入配置文件的目录比单个配置文件更可取。

相关内容