后缀.d在Linux中是什么意思?


33

我正在配置apache,默认情况下,我有目录/etc/httpd/conf/etc/httpd/conf.d。有什么不同?

你还可以看到后缀在许多其他目录,如/etc/init.d/etc/cron.d等...


1
这意味着它是指守护程序
动态


8
@职场英语对话:这个理论不合身/etc/apt/sources.list.d//etc/profile.d等等
马丁

从Haakon和deltaray给出的答案,我想知道是否.d代表default。根据此处的信息,它不是,但似乎合乎逻辑。也许我可以这样思考?
Smandoli 2012年

Answers:


44

“ d”代表目录,该目录是配置文件的集合,这些文件通常是片段,包含在主配置文件中。关键是将配置问题分开以增加可维护性。

当您有诸如/etc/httpd/confvs之类的区别时/etc/httpd/conf.d,通常情况是/etc/httpd/conf包含各种不同类型的配置文件,而.d目录包含相同配置文件类型的多个实例(例如“要加载的模块”,“要启用的站点”等) ),管理员可以根据需要添加和删除。


4
但是conf也是一个目录,因此如果两者都是目录,有什么区别?您对ServerFault的看法是正确的,是否可以移动它?
SCL

添加了一些关于区别的信息,希望它不会完全引起混淆:-)
Haakon

7
.d目录通常也自动加载。例如,cron将检查cron.d并解析其中的任何文件,主apache配置将具有类似“ include conf.d / *”的内容,该文件将在重新加载时包括conf.d中的任何文件。这对于模块的程序包管理也非常方便。程序包管理器不必尝试编辑文件,它只是将模块的配置放到正确的.d目录中,然后重新加载服务。
Niall Donegan

13

存在此目录命名约定的主要推动力是简化配置文件的软件包管理。无论是rpm,deb还是其他格式,将文件拖放到目录中都更加容易(并且可能更安全),以便将文件自动包含在程序的配置中,而不必尝试编辑全局配置文件。

logrotate是一个很好的例子。在/etc/logrotate.d目录中,实际上是已安装的每个应用程序的配置文件,这些文件将日志保存在/ var / log中。由于几乎每个系统都有消息,wtmp和lastlog文件,因此其中一些被捆绑到syslog配置中。但是,如果您在系统上安装Apache,则需要一种简单的方法来自动添加用于轮换Apache日志的配置,因此它只是在/etc/logrotate.d中删除了一个名为httpd的配置文件。并且logrotate配置为包括该目录中的文件。每个守护程序都由软件包所拥有,如果删除该软件包,它将删除该文件。它基本上是一种模块化配置文件的方式。请注意,这需要程序的支持,而不是系统为您执行的自动操作。通常,执行此操作的程序具有一个名为include的config指令,该指令指定该目录在文件系统上的位置。

在惯用脚本的init.drc.d目录之外,logrotate.d甚至可能是第一个使用此约定的地方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.