9.linux服务与守护进程控制

Linux 服务与守护进程控制

1. 服务与守护进程基础

  • 服务 (Service)应用程序 (Application) 在启动后会创建进程。当这些进程在后台持续运行时,它们就变成了 守护进程 (Daemon)
  • 大多数服务都是守护进程。
  • 服务由 systemctl 命令控制。
  • systemctl 是一个 systemd 工具,负责控制 systemd 系统和服务管理器。
  • systemd 是一系列系统管理守护进程、工具和库的集合,它取代了 System V init 守护进程。
  • systemd 是大多数守护进程的父进程。
  • 控制服务的命令是 systemctl

2. systemctl 命令详解与使用场景

  • 检查系统是否安装了 systemd:

    1
    systemctl --version

    VirtualBoxVM_CrBKqMAkpw.png

  • 检查 systemd 是否正在运行:

    1
    ps -ef | grep system

    VirtualBoxVM_RNswmKmk94.png

  • 检查所有正在运行的服务:

    1
    systemctl --all

    列出所有 systemd 单元,包括非活动状态的。
    VirtualBoxVM_VcBiaiBH6u.png

  • 管理服务状态 (status|start|stop|restart):

    1
    systemctl status|start|stop|restart application.service
    • status: 查看服务详细状态和日志。
    • start: 启动已停止的服务。
    • stop: 停止正在运行的服务。
    • restart: 重启服务,常用于配置更新后。

    比如我们尝试一下查看firewalld服务:
    VirtualBoxVM_VBCgftyiKu.png
    你在这里可以看到服务的状态,服务的路径等等信息。

    VirtualBoxVM_BrAi99nD5r.png

    这里我们尝试用systemctl stop杀掉这个服务尝试一下。

    VirtualBoxVM_too14Rx5eu.png

    这里使用ps命令发现这里没有什么信息了。

    VirtualBoxVM_nTRFg6ryiG.png

    再尝试用system start重启这个服务。

    有的时候你可能更改了某些配置,你想重启该服务获取新的状态,你就可以使用systemctl restart来实现。

    停止服务的最好方法就是使用systemctl stop,而不是kill。你可以使用kill之后使用systemctl status来观察和使用systemctl stop的区别在哪里。

  • 重新加载服务的配置:

    1
    systemctl reload application.service

    在不中断服务的情况下应用新的配置。
    重新加载不会影响你的服务,而停止和启动是会影响的。如果你在配置的时候停止一个服务,那服务在停止的时候就会失效。但是如果你更改配置文件并使用reload,他会将配置文件重新加载到systemctl,而无需停止和启动应用程序。

  • 设置服务开机自启 (enable|disable):

    1
    systemctl enable|disable application.service
    • enable: 配置服务在系统启动时自动启动。
    • disable: 阻止服务在系统启动时自动启动。
  • 彻底禁用服务 (mask|unmask):

    1
    systemctl mask|unmask application.service
    • mask: 强制禁用服务,防止其被任何方式启动。
    • unmask: 解除服务的强制禁用状态。