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

Oli*_*nde 246 filesystem init.d init

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

更一般地说,.d后缀向目录传达了什么含义?

Gil*_*il' 244

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

/etc/init包含 Upstart 使用的配置文件。Upstart 是 Ubuntu 倡导的一个年轻的服务管理包。在文件/etc/init的配置文件告诉新贵如何以及何时startstopreload配置,或查询status服务的。截至 lucid,Ubuntu 正在从 SysVinit 过渡到 Upstart,这解释了为什么许多服务都带有 SysVinit 脚本,尽管 Upstart 配置文件是首选。实际上,SysVinit 脚本是由 Upstart 中的兼容层处理的。

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

¹不包括 initrd

  • 深奥的历史记录:'.d' 目录与 System V 一起输入。当时这是一个令人费解的符号,最终可能是一个人的想法进入了代码库并且无法离开。例如,如果您认为 `cat` 是它执行的任务的一个坏名字,想象一下整个系统中有多少文件您必须触摸才能更改它。 (29认同)
  • @AsheeshR 检查是否有名为 `upstart` 或 `sysvinit` 的包。在最近的版本中,它也可能是“systemd”(当我写我的答案时,Ubuntu 不存在)。它是提供`/sbin/init`(`dpkg -S /sbin/init`)的那个包。 (5认同)

tho*_*ter 30

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

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

在需要包含/执行的顺序很重要的情况下,这些目录中的文件有时以数字开头,例如“00-default”或“80-user”,以便它们以正确的顺序执行。

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

  • .d 绝对是用于目录,而不是守护进程。 (23认同)

Sco*_*ott 13

正如您所指出的,“.d”命名法令人费解和奇怪,并且在任何现代系统中都没有任何位置——您会注意到大多数现代服务都倾向于放弃它。

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

  • 这是错误的,例如 udev 的 `rules.d`,Xorg 相对较新的 `xorg.conf.d`,不太旧的 `/etc/profile.d` 等等。 (7认同)