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

更一般而言,后缀.d传达到目录是什么意思?

#1 楼

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

/etc/init包含Upstart使用的配置文件。 Upstart是Ubuntu倡导的年轻服务管理软件包。 /etc/init中的文件是配置文件,用于告诉Upstart如何以及何时对startstopreload进行配置,或查询服务的status。从清晰的角度来看,Ubuntu正在从SysVinit过渡到Upstart,这解释了为什么尽管首选Upstart配置文件,许多服务还是随SysVinit脚本一起提供。实际上,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目录是用System V输入的。那是一个令人费解的表示法,并且最终可能是一个人的想法进入了代码库并且无法离开。例如,如果您认为cat对于它执行的任务而言是一个坏名字,请想象一下您需要触摸整个系统中的多少文件来更改它。

– msw
2010-10-2 3:36

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

–asheeshr
2014年6月20日7:25

@AsheeshR检查是否有一个名为upstart或sysvinit的软件包。在最新版本中,它也可以被系统化(当我写我的答案时,对于Ubuntu来说还不存在)。无论哪个软件包提供/ sbin / init(dpkg -S / sbin / init)。

–吉尔斯'所以-不再是邪恶的'
14年6月20日在8:16

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

– Sabuncu
2014年12月18日在21:09

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

–吉尔斯'所以-不再是邪恶的'
2014年12月18日在21:34

#2 楼

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

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

如果重要的是应以哪个顺序包括/执行它们,这些目录中的文件有时以数字开头,例如“ 00-default”或“ 80-user”,以便它们以正确的顺序执行。 .d”应全部执行。但是,如今,现代操作系统的init系统要比这复杂得多,但是目录名仍然存在。

评论


也许.d意味着它与通常在引导时启动的“守护程序”进程相关。

–用户157299
13年5月10日下午1:55

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

–马丁
2014年4月29日在17:05

#3 楼

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

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

评论


这是错误的,例如udev的rules.d,Xorg相对较新的xorg.conf.d,不太旧的/etc/profile.d等。

–俄罗斯
2014年6月3日,10:20