一、命令格式
- systemctl [command] [服务]
相关的command
- start:立即启动后面的服务
- stop:立即关闭后面的服务
- restart:立即重新启动后面的服务
- reload:不关闭后面的服务情况下,重新加载服务的配置文件,让设置生效
- enable:设置开机时,后面的服务自动启动
- disable:设置开机时,后面的服务不自动启动
- status:查看后面服务的状态(有没有执行、开机是否默认启动、登录信息等)
- is-active:目前这个服务有没有正在运行中
- is-enable:开机时有没有默认要启动这个服务
- mask:强制注销后面的服务
- unmask:将强制注销的任服务改回为原来的状态
二、服务的状态类型
- 查看时Loaded那一行代表:当前服务在系统启动时的状态,类型如下:
enable | 这个服务在开机时自动启动 |
disable | 这个服务在开机时不会自动启动 |
static | 这个服务不会自己启动,不过可能会被其他的enable服务来唤醒(依赖服务的性质) |
mask | 这个服务无论如何都无法被启动,因此已经被强制注销(非删除),即使有依赖服务关联,也无法启动。可通过systemctl unmask方式改回默认状态 |
- 查看时Active那一行代表:当前服务在当前系统中的状态,类型如下:
active(running) | 正有一个/多个服务在运行的意思 |
active(exited) |
仅执行一次就正常结束的服务,目前并没有任何进程在系统中执行。 举例来说,开机或是挂载时才会执行一次的quotaon功能,就是这种模式。quotaon不需一直运行,只需执行一次之后,就交给文件系统去自动处理 |
active(waiting) | 正在运行中,不过还需要等待其他的事件来触发才能继续运行。例如:打印的队列相关服务就是这种状态,因此在等待打印队列中有打印服务传进来才运行 |
inactive() | 这个服务在运行的意思 |
三、演示案例:对atd这个服务进行演示
- 第一步:我们查看一下atd这个服务的状态
- Loaded那一行:可以看到atd服务是开机自动启动的
- Active那一行:可以看到atd服务正在运行
- 最后一行:日志文件的信息(包括时间、信息发送主机、哪一个服务的信息、实际信息内容)。这一行信息管理员查看才会显示,普通用户查看不显示
- 第二步:我们关闭这个atd服务,然后再查看
- 关闭之后,可以看到Actinve那一行显示该服务已经没有运行
- 并且下面几行还会显示该服务日志文件的信息。可以看到这个服务被停止的时间等信息
四、演示案例:对chyonyd这个服务进行演示
- 我们将chyonyd这个服务停止,并且设置开机不会自动启动
- 第一步:先查看一下状态
- 第二步:停止该服务,并设置开机不自动启动(可以看到,是从/etc/systemd/system/下面删除一条链接文件而已)
- 第三步:再查看状态
- 第四步:再设置回来(可以看到,是从/etc/systemd/system/下面增加一条链接文件而已)
五、演示案例:验证服务依赖性
- cups.service:是一种打印服务,这个服务会启动631端口提供网络打印机的功能
- cups.path、cpus.socket:当有打印服务传进系统时,这两个服务会通知cup.service来打印
- 第一步:查看一下cups.service这个服务的状态
- 第二步:停止cups.service这个服务,设置开机不自动启动
可以看到删除了三个文件,因此这个cups.service服务还与另外两个文件有服务依赖性的关系
- 第三步:查看cups网络服务,可以看到没有端口产生了
- 第四步:尝试启动cups.socket监听用户端的请求
- 第五步:查看一下cups.service 、cups.socket 、cups.path这三个服务的状态
可以看到只有cups.socket在运行,cups.servie停止了,cups.path在等待
- 第六步:尝试使用lp这个命令来打印看看(因为没有打印机,所以显示出错)
- 第七步:现在再来查看cups.service的状态(可以看到已经启动了,并且也有端口也开启了)
原理:因此cups.service即使关闭了,但是如果有打印服务传进来时,cpus.socket会通知cups.service服务,因此cups.socket会唤醒cups.service服务(这就是服务依赖性)
六、演示案例:演示mask命令的作用
- 通过前面的案例,我们知道cups.service这个服务即使被关闭了,如果还有打印服务传进来时,还是会被cups.socket服务唤醒,因此我们可以通过mask这个命令来将cups.service服务彻底关闭
- 第一步:我们先将cups.service服务关闭,并且使用mask将其强制注销
使用mask之后,可以看到与这个服务的关联服务被空设备取代了
- 第二步:查看这个服务的状态
可以看到这个服务的启动脚本变为空设备了,因此这个服务无论如何都不会再启动了
七、演示案例:unmask命令的使用
- 承上面那个案例,我们将cups.service这个服务改回默认的状态
- 第一步:使用unmask取消强制注销
- 第二步:再查看一下这个服务的状态(可以看到又关联到/usr/lib/systemd/sysem/目录下面的服务了)