Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。
Systemd 包含众多指令,本文重点介绍常用的 systemctl
指令。
一、守护进程
曾经 Linux 的启动一直是采用的 init 进程,使用如下指令来启动服务:
1 | $ sudo /etc/init.d/apache2 start |
这种方法有两个缺点:
- 启动时间长
init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
- 启动脚本复杂
init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
二、Systemd
为了解决上述两个问题,诞生了 Systemd。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。
根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要 守护整个系统。
使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。
Systemd 并不是一个指令,而是一组指令,涉及到系统管理的各个方面。
接下来就是本文主要介绍的 systemctl
指令。
三、systemctl
1 | # 查看服务列表 |
使用指令 systemctl is-enabled postfix.service
得到的值可以是enable、disable或static,这里的 static 它是指对应的 Unit 文件中没有定义[Install]区域,因此无法配置为开机启动服务。
启用服务就是在当前“runlevel”的配置文件目录 /etc/systemd/system/multi-user.target.wants
里建立 /usr/lib/systemd/system
里面对应服务配置文件的软链接,禁用服务就是删除此软链接,添加服务就是添加软连接。