跳转至

systemd 系统简介

简介

systemd 是 Linux 操作系统中的 系统与服务管理器,目前已成为大多数主流 Linux 发行版(如 Debian、Ubuntu、CentOS、RHEL、Fedora)的默认初始化系统(init system)。

Info

在 systemd 这个名字里,最后的 d 并不是随意加的,而是有特殊的含义。
d 的含义:
在 Unix/Linux 的命名习惯中,很多后台守护进程(daemon)都会以 d 结尾,例如:

  • sshd → Secure Shell Daemon(SSH 服务的守护进程)
  • crond → Cron Daemon(定时任务守护进程)
  • httpd → HTTP Daemon(Web 服务守护进程)

所以,systemd = system + d(daemon),表示它是负责管理整个 系统(system) 的 守护进程(daemon)。

  • 它运行在后台,持续管理系统启动、服务、日志等工作;
  • 作为系统的“核心守护进程”,它像“总管”一样协调其他服务;
  • 这个命名既延续了 Unix 传统,也直观表达了“system daemon”的含义

它的主要职责:

  • 启动系统:在开机时初始化和启动各种服务、挂载文件系统;
  • 管理服务:在系统运行过程中,负责启动、停止、重启、监控服务;
  • 统一日志:通过 journald 提供集中式日志;
  • 替代多个工具:整合了启动管理、日志、定时任务、设备与挂载点管理等功能。

主要特点

  1. 开机加速
    采用 并行启动 技术,同时启动多个无依赖的服务,明显快于传统 SysVinit。

  2. 依赖管理
    支持复杂的服务依赖关系(A 服务依赖 B 服务,就会自动先启动 B)。

  3. 统一管理工具
    提供 systemctl 命令统一管理服务、挂载点、定时任务。

  4. 日志系统
    使用 journalctl 查看日志,不再依赖传统 syslog

  5. 替代多个旧工具
    可以替代 initcroninetdsyslog 等。

核心组件

  • systemctl:管理服务(启动、停止、开机自启)。
  • journalctl:日志查看工具。
  • loginctl:管理用户会话。
  • timedatectl:管理时间和时区。
  • hostnamectl:设置和显示主机名。
  • systemd-analyze:分析启动时间。

Unit(单元)

systemd 的基本配置和控制对象叫 Unit(单元),每个 unit 用一个 .unit 文件描述。常见类型:

  • .service → 服务(如 nginx.service
  • .socket → 套接字激活
  • .timer → 定时器(cron 的替代)
  • .target → 运行级别组(如 multi-user.target
  • .mount → 文件系统挂载

配置文件位置

  • /etc/systemd/system/ → 管理员自定义服务(优先级最高)
  • /lib/systemd/system/ → 系统自带服务文件
  • /usr/lib/systemd/system/ → 某些发行版使用此目录

架构图

+---------------------------------------------------+
|                   systemd                         |
|                                                   |
|  +------------------+   +---------------------+   |
|  |   Service Mgmt   |   |   Logging (journald)|   |
|  +------------------+   +---------------------+   |
|          |                          |             |
|  +------------------+   +---------------------+   |
|  |   Timer Units    |   |   Socket Units      |   |
|  +------------------+   +---------------------+   |
|          |                          |             |
|  +------------------------------------------------+
|              Target Units (运行级别组)            |
+---------------------------------------------------+
                |
                v
        系统初始化 & 用户空间启动

总结

systemd 就像 Linux 的“服务调度中心”,从系统启动到运行过程中,几乎所有服务、任务、日志、挂载点都由它统一管理。 它让 Linux 系统更加高效、统一,但也因为功能庞大而显得“重量级”。

systemctl 管理服务

systemd 常见的排查命令
命令 说明
systemctl status <服务名> 查看指定服务状态
journalctl -xe 查看系统报错日志
systemctl list-units --failed 查看启动失败的服务
systemd 常见的服务控制
操作 命令示例 说明
启动服务 systemctl start nginx 启动 nginx 服务
停止服务 systemctl stop nginx 停止 nginx 服务
重启服务 systemctl restart nginx 重启 nginx 服务
重载配置 systemctl reload nginx 重载服务配置(不中断服务)
查看服务状态 systemctl status nginx 查看服务是否运行
查看服务日志 journalctl -u nginx 查看 nginx 的日志输出
systemd 开机启动管理
操作 命令示例 说明
设置服务开机启动 systemctl enable nginx 设置 nginx 开机自启
取消服务开机启动 systemctl disable nginx 禁止 nginx 开机时自动启动
查看是否已启用 systemctl is-enabled nginx 查看是否设置为开机启动
立即启用但不持久 systemctl start nginx 启动但不自动开机自启
启用并立即启动服务 systemctl enable --now nginx 设置自启并立刻启动
停止并禁止自启服务 systemctl disable --now nginx 停止服务并禁用开机自启
systemd 系统级操作
操作 命令 说明
重新加载 systemd systemctl daemon-reexec 重启 systemd 本身
重新加载服务列表 systemctl daemon-reload 服务文件更改后需执行
关机 systemctl poweroff 关机
重启 systemctl reboot 重启系统
挂起 systemctl suspend 挂起(睡眠)系统

journalctl 日志查看工具

loginctl 管理用户会话

timedatectl 管理时间和时区

hostnamectl 设置和显示主机名

systemd-analyze 分析启动时间