系统初始化管理:systemd 辅助程序与 Upstart 详解
1 systemd 辅助程序
在开始使用 systemd 时,你可能会注意到 /lib/systemd
目录下有数量异常多的程序。这些程序主要是为单元提供支持的。例如, udevd
是 systemd 的一部分,在该目录下它以 systemd-udevd
的形式存在。另一个程序 systemd-fsck
则充当 systemd 和 fsck
之间的中介。
许多这类程序存在的原因是,它们包含了系统标准实用工具中缺失的通知系统。通常,它们只是执行系统标准实用工具,并将结果通知给 systemd。毕竟,在 systemd 内部重新实现整个 fsck
是不明智的。
这些程序的另一个有趣之处在于,它们是用 C 语言编写的,因为 systemd 的目标之一是减少系统中 shell 脚本的数量。虽然对于这样做是否是个好主意存在一定的争议(毕竟,很多这些程序可能原本可以写成 shell 脚本),但只要一切能可靠、安全且相当快速地运行,就没有太多理由去纠结这个问题。
当你在 /lib/systemd
中遇到无法识别的程序时,可以查阅手册页。很有可能该手册页不仅会描述这个实用工具,还会说明需要扩展的单元类型。
2 Upstart 概述
Upstart 版本的 init 围绕作业(jobs)和事件(events)展开。作业是 Upstart 在系统初始化和运行时执行的