# systemd 单元与 systemctl

> 什么是 systemd 单元、常见的单元类型，以及如何使用 systemctl 启动、停止、启用和检查服务。

systemd 单元是 systemd（大多数 Linux 发行版的初始化系统）所管理的配置对象，例如服务、套接字、定时器、挂载点等。单元由诸如 /etc/systemd/system/<name>.service 的单元文件描述，并通过 systemctl 命令进行控制。

## 单元类型

.service 用于运行程序，.socket 在有连接到达时启动服务，.timer 按计划运行单元，.mount 和 .automount 用于处理文件系统，.target 将单元分组到特定状态，例如 multi-user.target。

## 单元文件的存放位置

软件包将单元安装在 /usr/lib/systemd/system（或 /lib/systemd/system）中。本地更改应放在 /etc/systemd/system 中，该目录具有优先权。使用 'systemctl edit <unit>' 可以创建嵌入式覆盖配置，而不是修改打包的文件。

## 日常命令

'systemctl status <unit>' 显示状态和最后的日志行。'start'、'stop' 和 'restart' 立即生效；'enable' 和 'disable' 控制开机启动；'enable --now' 同时执行这两项操作。'systemctl --failed' 列出失败的单元，'systemctl daemon-reload' 在更改后重新读取单元文件。

## 如何检查故障服务

1. 列出失败的单元：systemctl --failed
2. 显示状态和最近的消息：systemctl status <unit>
3. 读取本次启动的完整日志：journalctl -u <unit> -b
4. 修复配置后：sudo systemctl restart <unit>

## 注意事项

- 使用 'systemctl edit' 修改打包的单元，而不要直接编辑 /usr/lib/systemd/system 中的文件：更新会覆盖它们。
- 请勿禁用不了解的单元，例如 systemd-journald 或 dbus。

## 资料来源

- [systemctl(1)](https://man7.org/linux/man-pages/man1/systemctl.1.html)
- [systemd.unit(5)](https://man7.org/linux/man-pages/man5/systemd.unit.5.html)
- [systemd.timer(5)](https://man7.org/linux/man-pages/man5/systemd.timer.5.html)

最后更新: 2026-10-08
URL: https://raincleaner.eu/zh/wiki/linux/systemd-units
