Linux基础 -- systemd 用户服务残留条目清除

systemd 用户服务残留条目清除

问题现象

执行 systemctl --user list-units --type=service 查看用户级服务时,出现服务文件已删除,但列表仍残留失效条目,状态显示为:

复制代码
● openclaw-gateway-persion.service    not-found failed failed  openclaw-gateway-persion.service
● openclaw-gateway-person.service    not-found failed failed  openclaw-gateway-person.service

执行 systemctl --user cat 服务名 提示 No files found,确认服务物理文件已不存在;执行 daemon-reload 重载配置后,残留条目仍未消失。

问题根因

服务物理文件已删除,但 systemd 会保留服务的历史运行失败状态记录,单纯重载配置不会清除该缓存记录,导致失效条目持续显示在服务列表中。

排查与解决步骤

1. 确认服务状态(验证问题)

bash 复制代码
# 查看用户级服务列表,确认残留失效条目
systemctl --user list-units --type=service

# 验证服务文件是否真的不存在
systemctl --user cat openclaw-gateway-persion.service
systemctl --user cat openclaw-gateway-person.service

结果:提示无对应文件,确认服务已物理删除。

2. 停止+禁用残留服务(前置操作)

bash 复制代码
# 停止失效服务(忽略报错,避免进程残留)
systemctl --user stop openclaw-gateway-persion.service 2>/dev/null
systemctl --user stop openclaw-gateway-person.service 2>/dev/null

# 禁用失效服务(取消开机自启)
systemctl --user disable openclaw-gateway-persion.service 2>/dev/null
systemctl --user disable openclaw-gateway-person.service 2>/dev/null

3. 重载 systemd 用户配置

bash 复制代码
# 刷新 systemd 配置,识别服务文件变更
systemctl --user daemon-reload

4. 清除失败状态记录(核心解决步骤)

bash 复制代码
# 重置 systemd 记录的所有用户服务失败状态(关键命令)
systemctl --user reset-failed

5. 验证清除结果

bash 复制代码
# 重新查看服务列表
systemctl --user list-units --type=service

结果:残留失效条目完全消失,问题解决。

最终一键清理脚本

后续遇到同类 systemd 残留服务问题,直接执行以下脚本即可一键清除:

bash 复制代码
# 定义需要清理的残留服务名
SERVICES=(
  "openclaw-gateway-persion.service"
  "openclaw-gateway-person.service"
)

# 批量停止、禁用、清理
for srv in "${SERVICES[@]}"; do
  systemctl --user stop "$srv" 2>/dev/null
  systemctl --user disable "$srv" 2>/dev/null
done

# 重载配置+清除失败记录
systemctl --user daemon-reload
systemctl --user reset-failed

# 验证结果
echo "=== 清理后服务列表 ==="
systemctl --user list-units --type=service

核心知识点总结

  1. daemon-reload:仅刷新 systemd 配置,不清除失败状态记录
  2. reset-failed:专门清除 systemd 记录的服务失败/失效状态,是解决残留条目的核心命令;
  3. 用户级服务操作必须加 --user 参数,避免误操作系统级服务。
相关推荐
A小辣椒14 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒18 小时前
TShark:基础知识
linux
AlfredZhao20 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux