![使用 /etc/*.d/ 作为配置机制的概念是何时在 Linux 中引入的?它叫什么?](https://linux22.com/image/1615289/%E4%BD%BF%E7%94%A8%20%2Fetc%2F*.d%2F%20%E4%BD%9C%E4%B8%BA%E9%85%8D%E7%BD%AE%E6%9C%BA%E5%88%B6%E7%9A%84%E6%A6%82%E5%BF%B5%E6%98%AF%E4%BD%95%E6%97%B6%E5%9C%A8%20Linux%20%E4%B8%AD%E5%BC%95%E5%85%A5%E7%9A%84%EF%BC%9F%E5%AE%83%E5%8F%AB%E4%BB%80%E4%B9%88%EF%BC%9F.png)
这是一个非常基础的问题,但却是 Google 上很难找到的问题之一。似乎/etc/*.d
并非所有 Linux 内核都支持配置。首先,我想了解如何正确引用该.d
范例;其次(可能超出了本网站的范围),我想了解其背后的历史以及选择不同配置策略的原因。
谢谢。
答案1
这显然是一个非常常见的问题。据我所知,你是 Stack Exchange 上第一个询问其好处和/或历史而不是仅仅询问其含义的人,所以我将在这里直接回答。
所以.d
只是表示“目录”。据我所知,这已成为 sysvinit 的一个功能,具有/etc/init.d/
或/etc/rc.d
文件夹。这些始终包含由其他进程解析或调用的独立配置文件。
至于为什么这样做,有以下几个原因:
想象一下,如果您的 init 进程由单个配置文件控制。该文件将变得庞大而笨重。Web 服务等
nginx
使用此范例来鼓励将各个网站或虚拟主机分离到自己的配置文件中。(此文件夹在大多数发行版 Nginx 软件包中都有调用sites-available
,但它也有一个conf.d
通常适用于所有设置的文件夹)安全分离(某种程度上)。单独的配置文件允许对每个文件设置不同的权限。如果信任一个用户修改与他们相关的服务或设置,他们只能修改他们有权修改的文件,而不是赋予他们“一个文件统治所有文件”的权限
易于故障排除/重新配置。回到 nginx,假设您需要禁用特定子域。由于每个站点都分解为自己的配置文件,因此您只需重命名或删除该文件,而不必进入单个大文件并注释掉所有内容。这同样适用于 init - 通常在 sysv 系统上,通过添加或删除符号链接来启用和停用 init 脚本。这可处理运行级别等。无需调用文本编辑器。
所有这些好处都是通过复杂性的微小增加而获得的。
术语?我认为这种设计没有任何官方术语,每个人都称它们为“点 d 文件夹”。
进一步阅读:
- Debian 邮件列表:某些目录和文件名末尾的 .d 实际上代表什么?
- 类似的问题Unix 和 Linux SE
- 类似的问题询问Ubuntu