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

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

我一直在阅读/听到这/etc是针对系统配置文件的。有人可以解释/给我一些直觉,为什么这些启动/停止/重新启动各种程序的脚本通常是/etc而不是/var/usr类似的东西?

答案1

早期(无论是历史上还是在启动过程中......)是(第一个安装的文件系统)/etc的一部分,而不是(直到磁盘变大)。 持有//usr/var暂时的数据,而这些脚本不是临时的。

事情没那么简单,但它就是这样开始的,没有理由重新设计整个目录布局。

答案2

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

尽管启动过程的定制程度比 15-30 年前要少得多,并且大多数启动配置已经自动化,但所有那些决定启动顺序的管理选择仍然存在于/etc.

这代表了一种非常集中的方式来维护和备份系统配置。在大多数系统上,备份/etc足以轻松重新安装整个系统。您只需完全重新安装所需的程序,然后恢复备份即可/etc

答案3

M. Dickey 和 M. Pelletier 都认同这个问题的前提。但前提是错误的。

如果您读过“/etc适用于系统配置文件”,那么您读到的内容并不能为您描绘全貌。看名字。这是“等等”。人们曾经把除厨房水槽之外的所有东西都放在那里。

  • /etc/rc曾经(并且在某些系统上仍然是)运行程序来启动一切。
  • 第一个用户进程的程序映像文件/etc/init曾经存在过(例如,在 XENIX 中,早在 upstart 成为一个想法之前)。
  • /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/usr/usr
  • systemd 操作系统约定有一些东西存在于/etc/systemd,一些东西在/run/systemd,一些东西在/usr/lib/systemd和 (即使由于不适用的原因没有记录)中的一些东西/usr/local/lib/systemd。同样,大多数“启动/停止服务的内容”都可以在 下找到,/usr而不是在 下找到/etc

答案4

Digital UNIX 非常明智地将脚本放在/sbin/init.d目录下。还有HP-UX,根据罗塞塔石碑

相关内容