为什么init.d脚本包含在etc中?


16

我一直在阅读/收听/etc有关系统配置文件的信息。有人可以解释/给我一些直觉,为什么这些脚本,启动/停止/启动各种程序通常是在/etc代替/var/usr或类似的东西?


尽管该问题可能只基于观点,但我认为可以用实际事实来回答。
朱莉·佩勒捷

有关历史原因的问题是否基于“观点”?回顾过去,发生某事可能是一些事实原因。即使只是“因为Grandhacker这么做了”,也不能由现在回答这个问题的任何人决定。
ilkkachu

除了问题说“为什么要这样”之外,这是基于观点的“丰富多彩的讨论”的触发因素。编辑了一下,使它不那么如此。@Adam,如果您认为这违背您的意图,请还原。
ilkkachu

1
因为服务的启动时间和方式是系统配置。
OrangeDog

1
用于歇斯底里的葡萄干。
TMN

Answers:


22

早期(从历史上以及在引导过程中……)/etc都是/(第一个挂载的文件系统)的一部分,而/usr实际上不是(直到磁盘变大)。 /var保存临时数据,而这些脚本不是临时的。

它不是那么简单,但是它是以这种方式开始的,几乎没有必要重新整理整个目录布局。


1
如您所说,这不是那么简单。各种商业UNIX系统/etc在某些时候都有实际的二进制可执行文件。至少init.d大部分是现代系统上的脚本。但是仍然不可能/etc挂载只读。

2
@SatoKatsura:随着感觉像脚本语言的编译语言的出现,我开始注意到一些/ etc脚本(甚至是初始化脚本)被go程序-二进制可执行文件所代替。
slebetman'8

还有趣的是,现代sysVinit替代品实际上确实使用简单的配置文件而不是完整的脚本,因此/etc可能会清除非配置内容。
GnP'9

/tmp保存临时数据。/var保存可变数据
Neil McGuigan

14

启动脚本实际上是系统配置的重要组成部分。

尽管与15-30年前相比,启动过程的自定义设置要少得多,并且大多数启动配置已实现自动化,但所有确定启动顺序的管理选择仍在中/etc

这是维护和备份系统配置的非常集中的方式。在大多数系统上,备份/etc足以使您轻松地重新安装整个系统。您只需使用所需程序进行完全重新安装,然后还原/etc备份。


3

迪基(M. Dickey)和佩尔捷(M. Pelletier)都买了问题的房地。但是前提是错误的。

如果您已阅读“ /etc是用于系统配置文件”,那么您所读的内容并不能完全代表您的情况。看名字。这是“等等”。人们一次又一次地将所有东西放在厨房的水槽旁。

  • /etc/rc 过去(在某些系统上仍然是)该程序运行以启动所有程序。
  • 第一个用户进程的程序映像文件/etc/init只有一个点(例如,在XENIX中,甚至在很早以前就还没有一个想法)。
  • /etc/profile/etc/zprofile以及其他所有绝对是脚本。
  • OpenBSD /etc/netstart是一个程序;就像FreeBSD的一样/etc/ipfw.rules
  • FreeBSD的/etc/rc.suspend和也是如此/etc/rc.resume。的确/etc/rc.sendmail/etc/rc.bsdextended/etc/rc.firewall

同样,如果您已阅读“通常在其中启动,停止/重新启动各种程序的脚本/etc而不是/var/usr或类似的内容”,那么您已经阅读了其他内容,这些内容并不能为您提供全部帮助。

  • FreeBSD / PC-BSD约定要有一个/usr/local/etc/rc.d/用于非操作系统rc脚本的目录。 rc用于各种事物的脚本生活在这里而不是在这里/etc
  • 你会发现daemontools的家庭的人把一些服务管理的东西进入/var/sv/var/service以及类似的地方。(例如,我的nosh工具集在中提供了将近一千个服务包/var/sv。唯一的服务包是安装/etc/service-bundles之前需要的60到70之间的服务包/usr,包括安装并检查/usr是否需要的服务。)
  • systemd操作系统约定中包含一些内容 /etc/systemd,一些内容/run/systemd,一些内容/usr/lib/systemd,并且(尽管由于不适用的原因没有记载/usr/local/lib/systemd。同样,大多数“启动/停止服务的内容”都在/usr而不是下找到/etc

2

您最好回顾一下Filesystem Hierarchy Standard。它会(详细)解释这是为什么的确切原因,但它也包含您可能好奇的其他许多路径上的此类信息。

文件系统标准已设计为供Unix发行版开发人员,程序包开发人员和系统实现者使用。但是,它主要是作为参考,而不是有关如何管理Unix文件系统或目录层次结构的教程。


它没有解释历史背景。
托尔比约恩Ravn的安德森

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.