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

SCL*_*SCL 41 linux apache-2.2

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

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

小智 48

“d”代表目录,这样的目录是配置文件的集合,这些文件通常是包含在主配置文件中的片段。重点是划分配置问题以提高可维护性。

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

  • .d 目录通常也是自动加载的。例如,cron 将检查 cron.d 并解析其中的任何文件,主要的 apache 配置将具有类似“include conf.d/*”的内容,它将在重新加载时包含 conf.d 中的任何文件。它对于模块的包管理也非常方便。包管理器不必尝试编辑文件,它只是将模块的配置放到正确的 .d 目录中,然后重新加载服务。 (9认同)
  • 但是 conf 也是一个目录,所以如果两者都是目录,有什么区别?您对 ServerFault 的看法是正确的,是否可以移动它? (4认同)

del*_*ray 14

这种目录命名约定背后的主要驱动力是为了更容易地管理配置文件的包。无论是 rpm、deb 还是其他什么,能够将文件放入目录中更容易(并且可能更安全),以便将其自动包含到程序的配置中,而不是尝试编辑全局配置文件。

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

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