忘记运行级别。

忘记运行级别。

我对运行级别及其工作原理没有清楚的了解。

我知道运行级别是一个数字,指示应启动哪些进程init。实际上:在启动时init看到rcS脚本的这个数字,它决定是否应该启动该脚本?

Busybox没有运行级别:它启动 rcS 中存在的任何脚本...是吗?实际上,它不检查脚本数字?

最后一个问题:为什么systemd不使用运行级别?在我的计算机中,我看到一个 rcS 目录,其中包含多个脚本及其关联的数字(运行级别编号)。

答案1

忘记运行级别。

当 AT&T Unix System 3 中引入运行级别时(是的,/etc/inittab是在 System 3 中引入的,而不是 System 5。)BSD 世界中出现了一些议论,并且 BSD 从未采用该系统。这么多年过去了,System 5 世界的大部分地区现在已经废除了运行级别。

在 IBM AIX 中,随着系统资源控制器的出现,实际使用的运行级别数量在 3.1 版本中减少到 1 个。 IBM 认为人们可能会在 1990 年忘记运行级别。从那时起,运行级别13to就被“保留”了。9

大约二十年后,systemd 人们在他们的 doco 中宣布运行级别已经“过时”。就像之前的 SRC 一样,也像其他系统一样,例如 Solaris 的 SMF 或 Laurent Bercot 的s6-rc或 Gerrit Pape 的runit-init或我的 nosh 系统管理工具集; systemd 不需要它们,或者它们所体现的概念。而是有更好的这些系统中存在各种机制。

runit具有在多个扫描目录之间切换的概念。 s6-rc具有以下概念切换“实时状态”。 noshsystem-control的概念是目标该服务捆绑包want/conflict/与其他服务捆绑包一起使用。 Solaris SMF 有“里程碑”,例如milestone/multi-user-servermilestone/self-assembly-completemilestone/name-services。等等。)

BusyBoxinit有一个inittab配置文件,但那是不同的到更常见的一种,并且不包含运行级别的概念。

所以:

  • 不,init确实不是根据运行级别编号在这些目录和脚本中查找内容。只有两个初始化系统曾经做过,甚至在其中一个中,也可以选择rc使用数据文件而不是/etc/rc.d/.
  • 不,即使在 AT&T Unix System 3 系统(及其后继者和克隆版本)上,也不会init查看这些脚本。它是rc
  • 在 systemd 操作系统上,/etc/init.d/脚本由向后兼容机制处理,将它们转换为本机服务单元。这很大程度上忽略提供的运行级别信息,在脚本本身和/etc/rc.d/子目录中,并且只是在其代码中硬连线一些目标。
  • 不,运行级别不是数字。 S是运行级别,而不是数字,如 mh和 AIX 的ab、 和c。 (我不打算在这里详细说明这些是什么,因为这是你可以忘记的事情.)

TrueOS 是逆势而上的一个系统。基于 FreeBSD,它本身仍然使用 Mewburnrc和 FreeBSD init,两者都没有运行级别机制,它采用 OpenRC 来替代 Mewburn rc。具有讽刺意味的是,当宇宙的 System 5 一侧最终将运行级别扔进历史垃圾箱时,它却将 System 5 运行级别添加到了 BSD 中。 ☺

进一步阅读

相关内容