> 软件包与系统管理 > systemd

systemd: 系统和服务管理器

systemd 是现代 Linux 系统中最广泛使用的系统和服务管理器。它取代了传统的 init 系统,集成了系统启动、服务管理、设备控制、日志管理等多种核心功能。

概述

systemd 在高效管理系统启动过程、监控运行中的服务以及控制系统各种状态方面发挥着核心作用。与 init 顺序执行脚本的方式不同,systemd 基于依赖关系并行处理服务,从而大大提高了启动速度。这是现代 Linux 系统性能和稳定性的重要贡献因素。

主要特点

systemd 的主要特点如下:

  • 并行启动: 服务依赖分析,同时运行多个服务,缩短启动时间。
  • 集成管理: 统一管理系统启动、服务、设备、日志等各种元素。
  • 服务监控: 服务失败时自动重启,有助于稳定运行。
  • 替代运行级别: 引入 'target' 概念替代运行级别 (runlevel),用于控制系统状态。

与 init 的关系

systemd 是传统 init 系统的继任者和替代者。它继承了 init 负责的系统启动和关闭任务,并增加了更优的功能。

  • init: 第一个运行的进程,启动时参考 `/etc/inittab` 文件,根据运行级别顺序执行脚本。
  • systemd: 同样是 PID 1 进程,但使用 'target' 而非运行级别,基于依赖关系并行处理服务,更快更灵活。
  • 兼容性: 在大多数现代 Linux 系统中,init 通常是 systemd 的符号链接,因此即使使用 init 命令,systemd 也会代替执行。

核心概念

理解 systemd 必不可少的核心概念。

单元 (Unit)

systemd 管理的所有对象(服务、挂载点、设备等)都定义为 '单元'。每个单元都有一个定义特定任务的配置文件(如 `*.service`、`*.mount` 等)。

  • 服务单元: 管理像 Web 服务器 (nginx.service) 或数据库 (mysql.service) 这样的后台进程。
  • 目标单元: 用于将多个单元分组。它替代了运行级别概念,例如 'multi-user.target' 指多用户模式,'graphical.target' 指图形模式。
  • 挂载单元: 管理文件系统挂载点。

systemctl

用于控制 systemd 的主要命令行工具。用于启动、停止、重启服务或检查单元状态。

  • 启动服务: sudo systemctl start nginx
  • 检查服务状态: sudo systemctl status nginx
  • 系统重启: sudo systemctl reboot

journalctl

用于查询 systemd 统一管理的系统日志的命令。可以按服务、时间、优先级过滤日志。

  • 查看所有日志: journalctl
  • 查看特定服务日志: journalctl -u nginx.service
  • 实时查看日志: journalctl -f

使用示例

systemd 核心命令 systemctl 和 journalctl 的使用示例。

检查系统启动目标

systemctl get-default

检查系统以哪个目标启动。

关闭系统

sudo systemctl poweroff

通过 systemd 安全地关闭系统。与 poweroff 命令功能相同。

启用/禁用特定服务

sudo systemctl enable nginx
sudo systemctl disable nginx

设置特定服务在系统启动时自动启动或禁用。

重启服务

sudo systemctl restart nginx

重启正在运行的 Web 服务器服务。在更改配置文件时很有用。

提示与注意事项

使用 systemd 时应了解的要点。

提示

  • systemd 的单元文件主要位于 `/etc/systemd/system/` 或 `/lib/systemd/system/` 目录下。
  • systemd 集成管理大多数启动/关闭相关命令。因此,`halt`、`reboot`、`poweroff` 等命令通常是 `systemctl` 的符号链接。
  • 使用 `systemctl status` 命令可以一次性查看服务状态和最新日志。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令