前言
Systemd 是新一代的 init 框架,最早从 Fedora 开始应用,如今已被 RedHat、Suse 和 Centos 等众多发行版广泛采纳。说实话,我们大多数人过去一直习惯使用传统的 SysV init 脚本,它们通常位于 /etc/rc.d/init.d/ 目录下。这些脚本通过调用守护进程二进制文件,进而 fork 出后台进程。尽管 Shell 脚本非常灵活,但要实现诸如进程管理及并行化执行排序等任务却相当困难。随着 systemd 引入新一代的守护进程管理方式,我们在运行时管理和控制它们变得更加容易,同时也优化了执行性能。
systemctl 命令是 systemd 团队做出的一个非常棒的改进。它不仅能显示更详细的错误信息,还能展示服务在运行时的错误,包括启动错误。systemd 还引入了一个名为 cgroups(控制组)的新概念,它本质上是将进程按层级组织起来。在旧的 init 系统下,想要弄清楚哪个进程在做什么、归属于谁变得愈发困难。而在 systemd 中,当进程生成子进程时,这些子进程会自动成为父进程 cgroup 的成员,从而避免了归属权上的混淆。
服务相关命令
SysVinit
—
service dummy start
service dummy stop
service dummy restart
service dummy reload
service dummy status
service dummy condrestart
chkconfig dummy on
chkconfig dummy off
chkconfig dummy
chkconfig dummy –add
运行级别命令
SysVinit
—
0
1, s, single
2
3
4
5
6
emergency
telinit 3
(或 systemctl isolate runlevel3.target)
sed s/^id:.*:initdefault:/ id:3:initdefault:/
runlevel
sed s/^id:.*:initdefault:/ id:3:initdefault:/
Systemd 新增命令
Systemd
—
systemctl dummy.service start -H user@host
systemd-analyze 或 systemd-analyze time
systemctl kill dummy
journalctl –since=today
hostnamectl
timedatectl