System V 概述
100%

初始化 · 第 1 课

System V 概述

了解传统 System V init 如何使用运行级别和有序服务脚本链接。

System V init 通常称为 SysV init 或 sysvinit,是一种传统的 PID 1 和服务启动设计。它在旧系统及兼容脚本中仍然重要,但存在 SysV 风格文件并不能证明正在运行的 PID 1 就是 sysvinit。

识别活动 Init 系统

检查正在运行的 PID 1:

$ ps -p 1 -o pid,comm,args=
$ readlink /proc/1/exe

/etc/inittab 文件或 /etc/init.d/ 目录只能作为辅助证据。Systemd 和其他 init 系统可能为兼容性保留这些文件,容器显示的 PID 命名空间也可能与主机不同。

什么是 sysvinit 正在活动的最有力证据?

运行级别

运行级别是一种以数字命名的运行模式。SysV 配置传统上使用 0 到 6 以及特殊级别,但其含义属于发行版策略,并非通用定律。常见约定包括:

  • 0:关机或断电转换
  • 1 或 S:单用户或救援模式
  • 2 到 5:由发行版定义的多用户模式
  • 6:重启转换

Debian 家族系统历史上对级别 2–5 采用相似处理,Red Hat 家族约定则区分文本和图形模式。应检查实际主机的 /etc/inittab、init 文档和运行级别目录。

在许多 SysV 系统上,哪个运行级别传统上请求关机或断电?

Init 脚本与运行级别链接

服务脚本通常位于 /etc/init.d/ 下。/etc/rc2.d/ 或 /etc/rc.d/rc2.d/ 等运行级别目录包含链接,其名称编码转换动作与顺序:

  • SNNname 链接请求启动操作。
  • KNNname 链接请求停止操作。
  • NN 提供该次转换中链接的字典序顺序。

具体算法和目录会有差异。依赖关系也可以在脚本头中表达,并由发行版工具处理,某些实现还会并行运行工作。不能把 SysV 简化为所有服务一定严格一次只启动一个。

进入运行级别时,S20networking 链接传统上请求什么?

在运行级别之间转换

Init 更改运行级别时,发行版的 rc 机制会停止新模式不再需要的服务,并启动新模式要求的服务。脚本应具有足够的幂等性,能够处理重复的状态或转换操作,并返回有意义的状态。

请求运行级别 0 或 6 是影响整个系统可用性的破坏性操作。应使用系统的关机接口、通知用户、保存活动工作并验证远程控制台访问,而不要随意调用原始 init 转换。

运行级别 6 传统上请求什么?

兼容性的局限

在 systemd 主机上,SysV 脚本可以包装成生成的单元,但 systemd 的依赖、超时、日志和状态语义仍然适用。直接运行旧脚本可能绕过服务管理器的跟踪。应识别活动管理器,并尽可能使用其原生接口。

为什么 systemd 主机上的 SysV 风格脚本通常应该通过服务管理器调用?

课程已完成

你已完成 System V 概述

现在,你可以解读传统 SysV 布局,而不会假定它正在活动。

  • 选择 init 命令前识别正在运行的 PID 1。

  • 把运行级别含义视为发行版定义的约定。

  • 解读运行级别链接中的 S、K 与数字顺序。

  • 对级别 0 和 6 使用受控关机流程。

  • 存在兼容脚本时,仍应尊重活动管理器。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 初始化