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


Answers:


229

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

/etc/init包含Upstart使用的配置文件。Upstart是Ubuntu倡导的年轻服务管理软件包。在文件/etc/init的配置文件告诉新贵如何以及何时startstopreload配置,或查询status服务的。从清晰的角度来看,Ubuntu正在从SysVinit过渡到Upstart,这解释了为什么尽管首选Upstart配置文件,许多服务还是随SysVinit脚本一起提供。实际上,SysVinit脚本由Upstart中的兼容性层处理。

.d在目录名称通常是指含有用于特定情况许多配置文件或脚本的目录(例如,/etc/apt/sources.list.d包含被级联,使虚拟文件sources.list; /etc/network/if-up.d包含了当网络执行的脚本 NTER ˚F王牌被激活)。当目录中的每个条目由不同的来源提供时,通常使用此结构,以便每个程序包可以存放其自己的插件,而不必解析单个配置文件以引用其自身。在这种情况下,碰巧“ init”是目录的逻辑名称,SysVinit首先使用init.d,而Upstart则使用普通init具有类似目的的目录(如果使用的话,它将是更多的“主流”,并且可能更少自大/etc/upstart.d)。

¹ 不计入initrd


28
深奥的历史注解:.d目录是用System V输入的。那是一个令人费解的表示法,最终可能是一个人的想法进入了代码库,无法离开。例如,如果您认为它cat对于执行的任务是一个坏名字,请想象一下要更改它,您需要触摸整个系统中的多少个文件。
msw

在同时具有两个目录的系统上,使用Upstart和SysVinit中的哪个?有没有办法检查?
asheeshr 2014年

3
@AsheeshR检查是否有一个名为upstart或的软件包sysvinit。在最新版本中,它也可能是systemd这样(当我编写答案时,Ubuntu还不存在)。无论哪个程序包提供/sbin/initdpkg -S /sbin/init)。
吉尔斯2014年

在我正在使用的AWS Ubuntu实例上(来自Bitnami),它upstart是提供/ sbin / init(运行dpkg -S /sbin/init)的软件包。但是Bitnami已将其脚本放置在/etc/init.d目录中。这与您对上述@AsheeshR的回答是否矛盾?谢谢。
Sabuncu 2014年

@Sabuncu这是“由Upstart中的兼容层处理SysVinit脚本”的示例。
吉尔斯2014年

29

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

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

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

在这种情况下,/etc/init.d/表明“ init.d”中的脚本应全部执行。但是,如今,现代操作系统的init系统要比这复杂得多,但是目录名仍然存在。


可能.d是因为它与通常在引导时启动的“守护进程”有关。

21
.d绝对是目录,而不是守护程序。
2014年

13

正如您所指出的那样,“。d”命名法令人困惑且陌生,并且在任何现代系统中实际上都没有任何位置-您会注意到,大多数现代服务都倾向于将其删除。

该目录之所以/etc/init不是,/etc/upstart是因为Upstart是项目名称,实际安装的二进制文件仍然是/sbin/init这样,因此其配置名称与二进制文件不匹配是没有意义的。


7
这是错误的,例如见的udev的rules.d,Xorg的公司比较近xorg.conf.d,不是太旧/etc/profile.d
鲁斯兰
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.