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 在更改后重新读取单元文件。
如何检查故障服务
- 列出失败的单元:
systemctl --failed - 显示状态和最近的消息:
systemctl status <unit> - 读取本次启动的完整日志:
journalctl -u <unit> -b - 修复配置后:
sudo systemctl restart <unit>
注意事项
- 使用
systemctl edit修改打包的单元,而不要直接编辑/usr/lib/systemd/system中的文件:更新会覆盖它们。 - 请勿禁用不了解的单元,例如 systemd-journald 或 dbus。
相关文章
- journalctl 与 systemd 日志如何使用 journalctl 读取日志、检查日志占用的空间大小,并通过 --vacuum 选项安全地缩减日志大小。
- cron 与 crontabcron 如何运行计划任务、五个 crontab 时间字段、系统 cron 文件的存放位置以及与 systemd 定时器的对比。
- logrotatelogrotate 的作用、/etc/logrotate.conf 和 /etc/logrotate.d 中的配置原理,以及如何安全地测试规则。
资料来源
- systemctl(1) man7.org
- systemd.unit(5) man7.org
- systemd.timer(5) man7.org
最后审核: