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发行版本系统上。
特性:
- 通过事件来启停任务和服务
- 任务和服务的启停会产生对应事件
- 系统上任何其他进程可以向它发送事件
- 服务可以多次重试启动
- 守护进程可以独立于他们的父进程被监控和重启
- 通过
D-Bus
和init
进程通信 - 用户服务的启停不需要超级权限
常用命令
$ 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)。
配置文件目录:
/etc/systemd/system/
/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)