我想知道为什么 6 是与“init 6”中的重新启动命令相关的数字/代码/信号。我的意思是历史/故事/传说原因,而不是以技术方式...如果它是“列表相关原因”或者可能是关于递归/circle-ouroboros/101 类似数字的图形事物。
我开始读书了UNIX操作系统的设计莫里斯·巴赫(Maurice Bach),但尚未找到原因或想法。
答案1
init 6
是(或,a)重新引导命令,因为“运行级别”的历史定义或主机预期所处的一般系统状态。这些通常定义为:
- 0 - 关闭/系统停止
- 1 - 单用户模式
- 2 - 保留供管理使用
- 3 - 具有网络和服务的多用户模式
- 4 - 保留供管理使用
- 5 - 具有网络、服务和 GUI 登录守护程序的多用户模式
- 6 - 重新启动
该init
命令告诉系统移动到指定的运行级别。因为6
是用于重新启动主机的常用定义运行级别,并且init 6
(或telinit 6
)是去对于该运行级别,这就是为什么init 6
通常被理解为reboot
命令的原因。
从技术上讲,由于狡猾或无聊的系统管理员可以重新定义这些命令,因此建议将其用作shutdown -r
重新引导命令。部分原因是某些发行版(例如 Gentoo)完全回避了这一约定,并且由于 System V Init 系统的不断弃用而转而支持新贵和其他“PID 1”守护进程。
答案2
System V 风格的 init 首次出现是在 80 年代初的 SVR3 中,在此之前 AT&T Unix 没有采取任何争论。
开箱即用,没有init 0
也没有init 6
配置;仅init 1
适用于单用户模式和init 2
多用户模式。
系统管理员可以自由地使用任何他们想要的额外运行级别。
使用 SVR4,运行级别标准化为以下值:
- s:单用户
- 0:停止/断电
- 1:单用户模式(!=单用户,更多的是恢复/管理模式)
- 2:多用户(机器是客户端)
- 3:多用户;分布式模式(机器是服务器)
- 4:未分配
- 5:诊断
- 6:重启
我最好的猜测是选择 6,因为没有设想需要额外的未分配运行级别。
所有这些都发生在 Gnu/Linux 发布之前,因此与 Linux 相关的任何内容都是无关紧要的。