Rain WikiWindows · Linux · Android

systemd 单元与 systemctl

服务使用 systemd 的发行版

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

1单元类型

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

2单元文件的存放位置

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

3日常命令

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。

资料来源

  1. systemctl(1) man7.org
  2. systemd.unit(5) man7.org
  3. systemd.timer(5) man7.org

最后审核: