Agent Skills
返回列表
🔒

Systemd 服务诊断

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 的指引,安装 @user_3c6cb52e/systemd-service-diagnostics 到你的 AI 助手中。

技能介绍

问题:服务挂了,但没人说得清为什么

systemctl start 失败、进程在重启循环里反复横跳、systemctl status 只给出一句 failed 却没有任何有效线索——这类场景在运维现场并不少见。传统排查要手动翻 journalctl、逐行 grep,再打开 unit 文件逐行对照配置,往往半小时过去才定位到一个 Type=notify 配错,或者 After= 依赖顺序颠倒。

技能如何工作

这个技能把上述排查流程拆成三个可重复的步骤:

  • 结构化日志提取:通过 journalctl -u <unit> -o json 拿到结构化 JSON 输出,而不是对纯文本做正则匹配,便于直接读取 EXIT_CODE、CODE_FILE 等关键字段。
  • 单元属性核对:用 systemctl show <unit> 拉取实际生效的 unit 属性(如 ExecStart、Restart、TimeoutStopSec),与预期配置做比对。
  • 配置与依赖校验:调用 systemd-analyze verify 检查 unit 文件的语法与引用错误,再用 systemd-analyze dot 生成依赖图,识别 ordering 问题。

能力边界与注意事项

它不是一个自动修复工具。诊断结果指向根因之后,修改 unit 文件、重启服务、处理文件权限或网络依赖仍然需要人工介入。systemd-analyze verify 对已加载的 unit 与磁盘上的文件可能给出不同结论;dot 输出的依赖图在复杂的 Wants / After 组合下需要人工判读。另外,journalctl 能查到的历史深度受 journald 的存储轮转策略限制,过早的记录可能已经不存在。

使用场景

  • 服务启动即失败或反复重启,需要从 journalctl JSON 日志中提取退出码定位根因
  • unit 文件经过修改后服务异常,需要用 systemd-analyze verify 校验语法与引用问题
  • 多个 systemd 单元之间存在循环依赖或排序异常,需要用 dot 输出分析依赖图
  • 容器宿主机上的 systemd 服务超时未就绪,需要检查 ExecStart 与 TimeoutStopSec 等实际生效属性

适合人员

  • 需要排查 Linux 服务启动故障的 SRE 工程师
  • 负责维护 systemd 单元配置的平台运维人员
  • 处理生产环境服务依赖问题的 DevOps 工程师
  • 需要在宿主机上诊断服务生命周期问题的基础设施工程师