生产环境 systemd 服务起不来,别急着重启机器,按这五步走,基本都能定位:

**1. 看单元状态**
`systemctl status xxx --no-pager -l`,先看 Active 状态和最近几行日志,很多时候错误原因直接写在脸上(端口被占、配置文件语法错)。

**2. 看完整日志**
`journalctl -u xxx --since "1 hour ago" -n 100`,加上时间范围过滤。注意用 `-u` 精确到单元,别在大海里捞。

**3. 手动前台运行**
`systemctl cat xxx` 找到 ExecStart,把命令抠出来手动在前台跑一遍。90% 的"服务起不来"在这一步现原形:环境变量没加载、相对路径、权限问题。

**4. 检查依赖和顺序**
`systemd-analyze critical-chain xxx` 看启动链,After/Requires 写错会导致服务在依赖就绪前启动。网络相关的服务尤其注意 `After=network-online.target` 和 `Wants=network-online.target` 要配对。

**5. 看 cgroup 和资源限制**
`systemctl show xxx -p MemoryMax -p TasksMax`,OOM kill 或 TasksMax 打满的表现就是"启动后秒退",journalctl 里能看到被 kill 的记录,但原因要到这一步才明朗。

**一个常见坑**:Type=forking 的服务,PIDFile 路径写错会导致 systemd 一直等待然后超时 kill,日志里看着像"启动慢",实际是配置问题。

你们还遇到过哪些 systemd 的奇葩故障?Type=notify 那个坑有人踩过吗?