近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStartsystemd 各有特点,越来越多的 Linux 发行版采纳了 systemd (Ubuntu15.04+/CentOS7+)。

Sysvint

Sysvinit 有比较历史悠久,其主要就是一个Shell脚本,并且是放置在 /etc/init.d 文件夹下。然后通过update-rc.d 命令进行运行级别的操作来达到服务的启动。

Upstart

UpStart 解决了之前提到的 sysvinit 的缺点。采用事件驱动模型,UpStart 可以:

这些特点使得 UpStart 可以很好地应用在桌面或者便携式系统中,处理这些系统中的动态硬件插拔特性。

Systemd

  1. 更快的启动速度

Systemd 提供了比 UpStart 更激进的并行启动能力,采用了 socket / D-Bus activation 等技术启动服务。

为了减少系统启动时间,systemd 的目标是:

同样地,UpStart 也试图实现这两个目标。UpStart 采用事件驱动机制,服务可以暂不启动,当需要的时候才通过事件触发其启动,这符合第一个设计目标;此外,不相干的服务可以并行启动,这也实现了第二个目标。

资料