Linux(入门基础):103---systemctl命令管理单一服务(启动/关闭/状态)

一、命令格式

  • 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/目录下面的服务了)

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88592251