当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

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

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

最佳解决办法

/etc/init.d包含System V init工具(SysVinit)使用的脚本。这是Linux的传统服务管理软件包,包含init程序(内核完成初始化时运行的第一个进程)以及一些基础设施,用于启动和停止服务并对其进行配置。特别是,/etc/init.d中的文件是响应startstoprestart和(如果支持)reload命令来管理特定服务的shell脚本。这些脚本可以通过其他触发器(通常是/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包含激活网络接口时执行的脚本)。当目录中的每个条目由不同的源提供时,通常使用此结构,以便每个包可以存放其自己的plug-in,而不必解析单个配置文件以引用它自己。在这种情况下,恰好“init”是该目录的逻辑名称,SysVinit最先出现并使用init.d,而Upstart使用普通init作为具有相似目的的目录(它本可以是更多“mainstream”,并且可能不那么傲慢,如果他们使用了/etc/upstart.d)。

¹不计入initrd

次佳解决办法

“.d”通常附加到一个目录名称,以表明为了方便起见,以前为单个脚本或单个配置文件处理过的内容(或本来可能已被分割为多个文件),但应包含,或一起执行。

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

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

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

第三种解决办法

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/175.html,未经允许,请勿转载。