现代Linux的五大初始化系统(1992-2015)

系统 Linux
在 Linux 和其他类 Uniux 系统中,init(初始化)进程是系统启动时由内核执行的第一个进程,其进程ID(PID)为 1,并静默运行在后台,直到系统关闭。

[[173836]]

在 Linux 和其他类 Uniux 系统中,init(初始化)进程是系统启动时由内核执行的***个进程,其进程 ID(PID)为 1,并静默运行在后台,直到系统关闭。

init 进程负责启动其他所有的进程,比如守护进程、服务和其他后台进程,因此,它是系统中其它所有进程之母(偏偏叫做“父进程”)。某个进程可以启动许多个子进程,但在这个过程中,某个子进程的父进程结束之后,该子进程的父进程会变成 init 进程。

这么多年过去了,许多的初始化系统在主流 Linux 脱颖而出,和本文中,我将你来看看在 Linux 操作系统***的初始化系统。

1. System V Init

System V (SysV) 是一个在类Unix系统中最为成熟而且大受欢迎的初始化方案,是 Unix/Linux 系统中所有进程的父进程。SysV是***个商业 Unix 系统设计的初始化方案。

除了Gentoo使用自主的初始化系统、Slackware使用 BSD 风格的初始化方案外,几乎所有的 Linux 发行版都率先使用 SysV作为初始化方案。

随着时间的推移,由于一些设计上的缺陷,有几个 SysV初始化替换方案已经开发出来,用以为 Linux 创建更加高效和***的初始化系统。

尽管这些替代方案都超越了 SysV 并提供了更多新特性,但它们仍然和原始 SysV 初始化脚本保持兼容。

2. SystemD

SystemD 是一个 Linux 平台中相对较新的初始化方案。它由 Fedora 15 引入,集成了各类工具以便更好的管理系统。主要目的是:系统初始化、管理和跟踪引导进程中和系统运行时所有的系统进程。

Systemd 全面有别于其他传统的 Unix 初始化系统,特别是在启动系统和服务管理方面。它同样兼容 SysV 和 LBS 初始化脚本。

其中较为突出的特性如下:

  • 纯粹、简单、高效的设计
  • 启动时的并发和并行处理
  • 更好的 API
  • 开启可选进程的移除功能
  • 使用 journald 来支持事件日志
  • 使用 systemd calender timers 来支持任务计划
  • 以二进制文件存储日志
  • 保存 systemd 的状态以待今后查看
  • 与 GNOME 更好整合实现等

查看 Systemd 初始化系统简介:https://fedoraproject.org/wiki/Systemd

3. Upstart

Upstart 是一个基于事件的初始化系统,由 Ubuntu 的制作团队开发的,用以替代 SysV。它可以启动不同的系统任务和进程、在系统运行时校验进程并在系统关闭时结束进程。

它是一个使用 SysV 和 Systemd 启动脚本的混合初始化系统,Upstart 中值得一提的特性如下:

  • Ubuntu 的原生初始化系统,但可以运行在其他所有的发行版中
  • 基于事件启动/结束的任务和服务
  • 启动/结束任务和服务时生成事件
  • 可以由其他系统进程发送事件
  • 使用 D-Bus 和 init 进程通信
  • 用户可以启动/结束其各自的进程
  • 可以再现崩溃的进程等

访问 Upstart 主页:http://upstart.ubuntu.com/index.html

4. OpenRC

OpenRC 是一个基于依赖关系的类 Unix 系统初始化方案,兼容 SysV。基本可以说是 SysV 的升级版,但必须要清楚记住的是:OpenRC 并非只是完全替代 /sbin/init 文件。

它所提供的出色特性如下:

  • 可运行在包括 Gentoo 和 BSD 在内的多数 Linux 系统之中
  • 支持硬件触发的初始化脚本
  • 支持单个配置文件
  • 不支持单个服务配置文件
  • 以守护进程的方式运行
  • 并行服务启动等

访问 OpenRC 主页:https://wiki.gentoo.org/wiki/OpenRC

5. runit

runit 同样是一个跨平台初始化系统,可以运行在 GNU/Linux、Solaris、BSD 和 Mac OS X 中,用替代 SysV,同时提供服务监控。

相比于 SysV 和其他 Linux 初始化系统,它提供了一些好用和卓越的组件,如下:

  • 服务监控:每个服务都关联一个服务目录
  • 清理进程状态,以保证每个进程处于干净状态
  • 可靠的日志机制
  • 快速的系统启动和关闭
  • 可移植
  • 打包方便
  • 代码体积小等

访问 runit 主页:http://smarden.org/runit/

正如我之前所说的,Linux 中的初始化系统负责启动和管理所有的进程。此外,SysV 是 Linux 系统中主要的初始化系统,但由于一些性能缺陷,系统开发者已经开发出几个替代品。

在这里,我已经介绍了几个可用的替代方案,但你可能觉得有一些其他的初始化系统值得在此提及。请在下方的评论区将你的想法告诉我们。

责任编辑:武晓燕 来源: Linux中国
相关推荐

2022-03-15 14:55:34

Kubernetes

2023-10-06 20:57:52

C++聚合成员

2023-06-13 15:29:42

智能建筑传感器

2019-06-04 10:40:07

2017-09-13 14:28:02

Linux初始化系统运行级别

2019-09-25 09:09:48

Linux内核CPU

2012-12-25 15:08:28

vSphere 5.1Xenserver 6Hyper-V 3.0

2015-10-28 10:56:29

vForum2015

2021-04-10 15:34:09

LinuxLinux好处

2009-10-14 11:19:11

桌面虚拟化模式

2011-08-16 14:54:12

iphone开发APP

2011-03-31 16:46:10

LinuxMySQL

2018-12-27 08:00:58

基础设施数据中心趋势

2023-11-12 23:08:17

C++初始化

2022-11-15 20:48:41

Linux

2015-02-06 11:00:54

SDN

2014-12-16 09:09:17

2024-04-25 09:24:19

系统设计开发

2014-02-20 11:11:52

2012-11-26 09:54:56

点赞
收藏

51CTO技术栈公众号