linux 点滴

linux 文件系统中的 XXX.d 文件夹

在 linux 文件系统中,经常会看到一种特殊的文件夹 — xxx.d 文件夹。尤其是在 /etc 目录中,经常看到某个文件夹中包含一个配置文件 xxx.conf 的同时,也包含一个配置文件同名的 xxx.d 文件夹,里面包含一系列配置文件。

xxx.d 文件夹是 linux 系统的一种惯例,也是一种优秀的设计,为碎片化文件管理与整合提供一套良好的机制。

现代软件系统(或服务)都是一种开放性设计,即除了软件系统(或服务)的核心功能外,可以通过添加额外软件包或组件的方式,进一步增强、完善软件系统(或服务)的功能,进而构建出更强大的功能生态。而软件系统功能往往由配置文件设定,增加额外软件包后,整个系统配置也要随之同步变更。一般而言,初始的软件系统的各种属性通过一个核心的配置文件定义,新增软件包以后,软件系统的属性也要进行对应的调整。

一种策略是在核心配置文件上直接修改,核心配置文件对各个软件包是一种共享资源,各个软件包将各种对应的配置写入核心配置文件。这种系统配置统一管理的方式比较直接,但对共享资源的使用也会带来诸多不便,例如,软件包删除后,将系统配置恢复到软件包增加前的状态就有一定困难。

另一种方式是,将系统配置分散化管理,即,在一个核心配置文件的基础上,所有额外软件包都独立管理自己的配置文件,这些独立的配置文件都是完整系统配置的一部分,这些片段(碎片)配置文件,通过一定的机制整合到一起,形成一个完整配置后对原有的核心配置文件进行替代增强。这种方式为系统配置管理提供了极大的灵活性,无需大动干戈,只需修改碎片化的小配置文件,即可实现对整个系统配置的调整完善。xxx.d 文件夹即是针对这一思想的具体实现。软件系统有初始配置文件,如 xxx,同时,设立配置文件夹 xxx.d,只要放入文件夹内的配置文件,都是有效配置文件并被整合为系统完整配置一部分,进而实现对 xxx.conf 的增强。

/etc 是 linux 系统集中存放配置文件的地方,系统配置碎片化管理在这个文件夹里随处可见。配置文件和对应配置文件夹名称可能相同,也可能不同。

配置文件 碎片配置文件夹
/etc/Muttrc /etc/Muttrc.d/
/etc/bash_completion /etc/bash_completion.d/
/etc/xinetd.conf /etc/xinetd.d/
/etc/apache2/apache2.conf /etc/apache2/conf.d/
/etc/fonts/fonts.conf /etc/fonts/conf.d/

一般来说,看到 .d 文件夹,往往就意味着该文件夹包含一系列配置文件碎片,这些碎片将会被整合到一起为某个软件系统(或服务)提供对应的配置信息。

Reference

  1. https://unix.stackexchange.com/questions/4029/what-does-the-d-stand-for-in-directory-names
  2. https://superuser.com/questions/230247/in-linux-why-are-folders-for-configuration-files-always-named-d
  3. https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux
  4. http://blog.siphos.be/2013/05/the-linux-d-approach/
  5. https://www.redhat.com/sysadmin/etc-configuration-directories

发表评论

电子邮件地址不会被公开。 必填项已用*标注