SystemV, Upstart和SystemD的简单比较

发布于 2017-09-26 12:17:55

SystemV

Boot time depends on the admins optimizations.

Due to its static dependency handling relies on a knowledgeable admin. Decide for yourself if you count that as advantage or not.

Needs often some hacks to monitor services, services can easily escape the monitoring.

Written as Shell scripts, so easy to debug and alter if necessary.

Upstart

upstart是一个基于事件的/sbin/init守护进程的替代品,提供随系统启动、关闭服务并监控它们的功能,是init进程的升级版。

它本来是为Ubuntu系统开发的,但是适合部署在所有linux发行版本系统上。

特性:

  1. 通过事件来启停任务和服务
  2. 任务和服务的启停会产生对应事件
  3. 系统上任何其他进程可以向它发送事件
  4. 服务可以多次重试启动
  5. 守护进程可以独立于他们的父进程被监控和重启
  6. 通过D-Businit进程通信
  7. 用户服务的启停不需要超级权限

常用命令

$ initctl status <job>
$ initctl list
# initctl start|stop <job>

全部文档(Upstart Intro, Cookbook and Best Practises)

Systemd

Linux操作系统和服务的管理工具。相比较于linux的调度器进程的PID为0,systemd运行时PID为1。显然它的作用是启动系统剩余的其他东西。

附进程号列表:

0 The Scheduler
1 The init process
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

它提供了激进的并行能力,使用socket和D-Bus(一种进程间通信的简单方式,是systemd的一个必须依赖)作为消息通知来启动服务,按需激活守护进程。它支持SysV和LSB初始化脚本,是sysvinit的替代品。

它还包括了日志守护进程,一系列配置主机名、日期、时区的工具,维护已登录用户、正在运行的容器和虚拟机、系统账户的列表,运行时目录和配置,管理简单网络配置的守护进程,网络时间的同步,日志转发,域名解析。

Systemd通过systemctl命令来管理。

systemctl命令

系统状态

$ systemctl status

列出正在运行的单元

$ systemctl
$ systemctl list-units

列出失败的单元

$ systemctl --failed

列出已安装的单元

$ systemctl list-unit-files

单元(unit)可以是服务(.service)、挂载点(.mount),设备(.device),套接字(.socket)。

配置文件目录:

  1. /etc/systemd/system/
  2. /usr/lib/systemd/system/

启动/停止/重启某个单元(必须列出完整的后缀,否则默认后缀是.service

# systemctl start|stop|restart <unit>

重载配置

# systemctl reload <unit>

显示状态

$ systemctl status <unit>

检查是否启用

$ systemctl is-enabled <unit>

在下次重启时启用、禁用

# systemctl enable|disable <unit>

立即启用并在以后重启生效

# systemctl enable --now <unit>

隐藏(mask)、取消隐藏单元使不能被启动

# systemctl mask|unmask <unit>

显示单元的帮助手册(前提是此单元支持)

$ systemctl help <unit>

重启systemd并扫描新的或已修改的单元

# systemctl daemon-reload

电源管理

$ systemctl reboot|poweroff|suspend|hibernate|hibrid-sleep

编辑单元文件

systemd的单元文件受启发于XDG(X Desktop Group X桌面工作组)的桌面快捷方式的.desktop文件,而后者又是受windows的.ini文件的启发。

(依赖处理、服务类型、编辑已提供的文件)

(略,参考末尾链接文档)

Inits in Fedora and RHEL

三个软件的对比,可以看看这个PDF

  • SysV init
    • Fedora < 9
    • Red Hat Enterprise Linux < 6.0
  • upstart
    • Fedora 9 – 14
    • Red Hat Enterprise Linux 6
  • systemd
    • Fedora 15 (Rawhide)

fedora redhat centos 的分化关系

comments powered by Disqus