/ etc / init /和/etc/init.d/有什么区别?

/etc/init//etc/init.d/什么区别?

更一般地说, .d后缀对目录有什么意义?

/etc/init.d包含System V init工具(SysVinit)使用的脚本。 这是Linux的传统服务管理包,包含init程序(内核完成初始化时运行的第一个进程¹)以及启动和停止服务并配置它们的一些基础结构。 具体来说,/ /etc/init.d中的文件是shell脚本,它们响应startstoprestart和(当支持时) reload命令来管理特定服务。 这些脚本可以直接调用(或最常见)通过其他触发器调用(通常在/etc/rc?.d/存在符号链接)。

/etc/init包含Upstart使用的配置文件。 Upstart是Ubuntu倡导的年轻服务管理软件包。 /etc/init中的文件是配置文件,告诉Upstart如何以及何时startstopreload配置或查询服务的status 。 从清晰度来看,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

“.d”通常附加到目录名称,以指示由于方便起见,单个脚本或单个配置文件处理过的(或可能已经存在的)已被拆分为多个文件,但是应该包括在一起或执行。

例如,/ /etc/apache/conf.d/ / /etc/apt/sources.d/ /etc/apache/conf.d//etc/apt/sources.d/

如果重要的是它们应该被包含/执行的顺序,这些目录中的文件有时以数字开头,例如“00-default”或“80-user”,以便它们以正确的顺序执行。

/etc/init.d/的情况下,它表示“init.d”中的脚本都应该被执行。 然而,现在,现代操作系统的init系统比这更复杂,但目录名仍然存在。

正如你所指出的那样,“。d”命名法令人费解和奇怪,在任何现代系统中都没有任何地方 – 你会注意到大多数现代服务都倾向于放弃它。

目录是/etc/init而不是/etc/upstart的原因是因为Upstart是项目名称,实际安装的二进制文件仍然是/sbin/init因此它的配置有一个名称不是没有意义匹配二进制文件。