Olivier Lalonde Asked: 2010-10-02 14:59:18 +0800 CST2010-10-02 14:59:18 +0800 CST 2010-10-02 14:59:18 +0800 CST /etc/init/ 和 /etc/init.d/ 有什么区别? 772 /etc/init/和 和有什么不一样/etc/init.d/? .d更一般地,后缀向目录传达什么含义? filesystem init init.d 3 个回答 Voted Best Answer Gilles 'SO- stop being evil' 2010-10-02T15:28:10+08:002010-10-02T15:28:10+08:00 /etc/init.d包含 System V 初始化工具 (SysVinit) 使用的脚本。这是 Linux 的传统服务管理包,包含init程序(内核完成初始化时运行的第一个进程¹)以及一些用于启动和停止服务并配置它们的基础设施。具体来说,其中的文件/etc/init.d是 shell 脚本,它们响应start、stop、restart和(如果支持)reload命令来管理特定服务。这些脚本可以直接调用,也可以(最常见)通过其他一些触发器(通常在 中存在符号链接/etc/rc?.d/)调用。 /etc/init包含 Upstart 使用的配置文件。Upstart 是 Ubuntu 倡导的一个年轻的服务管理包。中的文件是配置文件,/etc/init告诉 Upstart 如何以及何时进行start配置或查询服务。从 Lucid 开始,Ubuntu 正在从 SysVinit 过渡到 Upstart,这就解释了为什么许多服务都带有 SysVinit 脚本,尽管 Upstart 配置文件是首选的。事实上,SysVinit 脚本由 Upstart 中的兼容层处理。stopreloadstatus .din 目录名称通常表示包含许多配置文件或特定情况下的脚本的目录(例如/etc/apt/sources.list.d,包含连接以创建虚拟的文件sources.list;包含在激活网络接口时/etc/network/if-up.d执行的脚本)。当目录中的每个条目由不同的来源提供时,通常会使用这种结构,这样每个包都可以存放自己的插件,而无需解析单个配置文件来引用自己。在这种情况下,恰好“init”是目录的逻辑名称,SysVinit 先出现并使用,而 Upstart 使用普通init.dinit对于具有类似目的的目录(如果他们使用它,它会更“主流”,也许不那么傲慢/etc/upstart.d)。 ¹不算 initrd thomasrutter 2013-05-10T18:51:25+08:002013-05-10T18:51:25+08:00 “.d”通常附加到目录名称后,表示为了方便起见,曾经(或可能已经)由单个脚本或单个配置文件处理的内容已拆分为多个文件,但应该一起包含或执行。 例如,/etc/apache/conf.d/或/etc/apt/sources.d/ 如果包含/执行它们的顺序很重要,这些目录中的文件有时以数字开头,例如“00-default”或“80-user”,以便它们以正确的顺序执行。 在这种情况下/etc/init.d/,有点表明“init.d”中的脚本都应该被执行。然而,如今现代操作系统的init系统比这要复杂一些,但目录名仍然存在。 Scott 2010-10-13T17:59:40+08:002010-10-13T17:59:40+08:00 正如您所指出的,“.d”命名法令人费解和奇怪,并且在任何现代系统中都没有任何位置——您会注意到大多数现代服务都倾向于放弃它。 目录存在/etc/init和不存在的原因/etc/upstart是因为 Upstart 是项目名称,实际安装的二进制文件仍然存在/sbin/init,因此其配置名称与二进制文件不匹配是没有意义的。
/etc/init.d
包含 System V 初始化工具 (SysVinit) 使用的脚本。这是 Linux 的传统服务管理包,包含init
程序(内核完成初始化时运行的第一个进程¹)以及一些用于启动和停止服务并配置它们的基础设施。具体来说,其中的文件/etc/init.d
是 shell 脚本,它们响应start
、stop
、restart
和(如果支持)reload
命令来管理特定服务。这些脚本可以直接调用,也可以(最常见)通过其他一些触发器(通常在 中存在符号链接/etc/rc?.d/
)调用。/etc/init
包含 Upstart 使用的配置文件。Upstart 是 Ubuntu 倡导的一个年轻的服务管理包。中的文件是配置文件,/etc/init
告诉 Upstart 如何以及何时进行start
配置或查询服务。从 Lucid 开始,Ubuntu 正在从 SysVinit 过渡到 Upstart,这就解释了为什么许多服务都带有 SysVinit 脚本,尽管 Upstart 配置文件是首选的。事实上,SysVinit 脚本由 Upstart 中的兼容层处理。stop
reload
status
.d
in 目录名称通常表示包含许多配置文件或特定情况下的脚本的目录(例如/etc/apt/sources.list.d
,包含连接以创建虚拟的文件sources.list
;包含在激活网络接口时/etc/network/if-up.d
执行的脚本)。当目录中的每个条目由不同的来源提供时,通常会使用这种结构,这样每个包都可以存放自己的插件,而无需解析单个配置文件来引用自己。在这种情况下,恰好“init”是目录的逻辑名称,SysVinit 先出现并使用,而 Upstart 使用普通init.d
init
对于具有类似目的的目录(如果他们使用它,它会更“主流”,也许不那么傲慢/etc/upstart.d
)。¹不算 initrd
“.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
,因此其配置名称与二进制文件不匹配是没有意义的。