/etc/init/
和之间有什么区别/etc/init.d/
?
更一般而言,.d
后缀传达到目录的含义是什么?
/etc/init/
和之间有什么区别/etc/init.d/
?
更一般而言,.d
后缀传达到目录的含义是什么?
Answers:
/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
的配置文件告诉新贵如何以及何时start
,stop
,reload
配置,或查询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
upstart
或的软件包sysvinit
。在最新版本中,它也可能是systemd
这样(当我编写答案时,Ubuntu还不存在)。无论哪个程序包提供/sbin/init
(dpkg -S /sbin/init
)。
upstart
是提供/ sbin / init(运行dpkg -S /sbin/init
)的软件包。但是Bitnami已将其脚本放置在/etc/init.d目录中。这与您对上述@AsheeshR的回答是否矛盾?谢谢。
通常在目录名称后附加“ .d”,以表示以前为单个脚本或单个配置文件处理过的(或可能已经处理过的)为方便起见已拆分为多个文件,但是应该一起包含或执行。
例如,/etc/apache/conf.d/
或/etc/apt/sources.d/
如果应该以什么顺序包含/执行它们很重要,则这些目录中的文件有时会以数字开头,例如“ 00-default”或“ 80-user”,以便它们以正确的顺序执行。
在这种情况下,/etc/init.d/
表明“ init.d”中的脚本应全部执行。但是,如今,现代操作系统的init系统要比这复杂得多,但是目录名仍然存在。
.d
目录是用System V输入的。那是一个令人费解的表示法,最终可能是一个人的想法进入了代码库,无法离开。例如,如果您认为它cat
对于执行的任务是一个坏名字,请想象一下要更改它,您需要触摸整个系统中的多少个文件。