Systemd Housekeeping
审计 systemd 服务单元,清理死尸和垃圾。
快速巡检
# 1. 列出所有 failed 单元
systemctl list-units --type=service --state=failed
# 2. 识别垃圾模式
# - not-found: 文件已删但 systemd 还记着
# - 路径写错的 ExecStart(如 /usr/local/bin/podman-compose)
# - 模板变量未替换的文件(如 {name}-compose.service)
# - 同服务的重复单元(如 searx-compose + searxng)
# 3. 干掉确认的垃圾
sudo rm /etc/systemd/system/<garbage>.service
sudo systemctl daemon-reload
sudo systemctl reset-failed <garbage>.service
清理确认流程
systemctl list-units --state=failed— 抓到全部红色- 逐个确认:
- 有 timer 依赖的(如bean-snapshot.timer)→ 保留
- 有业务价值的(如pg-backup-hdd)→ 留但排查失败原因
- 路径写错 / 模板残留 / 重复 → 删 - 删完后
daemon-reload+reset-failed清干净状态
典型垃圾特征
| 特征 | 例子 | 处理 |
|---|---|---|
| ExecStart 指向不存在的路径 | /usr/local/bin/podman-compose |
删或修路径 |
| 文件名含模板变量 | {name}-compose.service |
删 |
| 同名但多份 | searx-compose.service + searxng.service |
留对的删冗余 |
| 文件已删但 not-found | 任何 not-found 单元 | reset-failed |