更一般地说,目录中的.d后缀表示什么意思?
/etc/init.d
包含了 System V init 工具(SysVinit)使用的脚本。这是 Linux 的传统服务管理包,其中包含了 init
程序(在内核完成初始化后运行的第一个进程¹),以及一些用于启动、停止服务和配置服务的基础设施。具体来说,/etc/init.d
目录中的文件是 shell 脚本,用于响应 start
、stop
、restart
和(如果支持的话)reload
命令来管理特定的服务。这些脚本可以直接调用,或者(最常见的情况)通过其他触发器(通常是在 /etc/rc?.d/
目录中存在符号链接)来调用。
/etc/init
包含了 Upstart 使用的配置文件。Upstart 是由 Ubuntu 支持的一个年轻的服务管理包。在 /etc/init
目录中的配置文件告诉 Upstart 如何以及何时 启动
、 停止
、 重新加载
配置或查询服务的 状态
。自 lucid 版本以来,Ubuntu 正在从 SysVinit 迁移到 Upstart,这就解释了为什么许多服务即使有 SysVinit 脚本也更倾向于使用 Upstart 配置文件。事实上,SysVinit 脚本是由 Upstart 中的兼容层处理的。
.d
在目录名称中通常表示包含许多配置文件或脚本的目录,用于特定情况(例如,/etc/apt/sources.list.d
包含被连接起来形成虚拟sources.list
的文件;/etc/network/if-up.d
包含在网络接口激活时执行的脚本)。这种结构通常在目录中的每个条目由不同来源提供的情况下使用,以便每个软件包都可以存放自己的插件,而无需解析单个配置文件来引用自身。在这种情况下,“init”只是一个逻辑上的目录名称,SysVinit首先使用了init.d
,而Upstart则使用了纯粹的init
作为具有类似目的的目录名称(如果他们使用/etc/upstart.d
代替,可能会更“主流”,也许不那么傲慢)。
¹ 不包括initrd
/etc/apache/conf.d/
或/etc/apt/sources.d/
在需要按顺序包含/执行它们的情况下,这些目录中的文件有时以数字开头,比如“00-default”或“80-user”,以确保它们按正确的顺序执行。/etc/init.d/
的情况下,它有点表示应该执行“init.d”中的所有脚本。然而,现代操作系统的初始化系统比这复杂得多,但目录名仍然存在。.d
表示它与一个通常在启动时启动的“守护进程”相关。 - user157299rules.d
,Xorg相对较新的xorg.conf.d
,还有不太旧的/etc/profile.d
等等。 - Ruslan
.d
目录是在System V中引入的。当时它是一个令人困惑的标记,最终可能只是一个人的想法进入了代码库,并且无法离开。例如,如果你认为cat
是一个不好的任务名称,想象一下要更改它需要触及系统中多少个文件。 - mswupstart
或sysvinit
的软件包。在最新版本中,也可能是systemd
(在我回答时Ubuntu还不存在这个)。它是提供/sbin/init
的软件包(dpkg -S /sbin/init
)。 - Gilles 'SO- stop being evil'upstart
软件包提供了/sbin/init(运行dpkg -S /sbin/init
)。但是Bitnami将其脚本放置在/etc/init.d目录中。这与您对@AsheeshR的回答是否有冲突?谢谢。 - Sabuncu/etc/init.d/*
或/etc/rc*.d/*
,但有一个Upstart任务/etc/init/rc.conf
和/etc/init/rcS.conf
会加载它们。 - Gilles 'SO- stop being evil'