| 场景 | systemd 服务起不来或反复重启 |
|---|---|
| 目标 | 拿到退出原因与崩溃现场 |
| 工具链 | systemctl status → journalctl → 内核日志 |
第 1 步:看单元状态与退出码
第 1 步:看单元状态与退出码
systemctl status myapp --no-pager -l
systemctl show myapp -p ExecMainStatus,ExecMainCode,NRestarts第 2 步:看日志尾部
第 2 步:看日志尾部
journalctl -u myapp -n 200 --no-pager
journalctl -u myapp --since '10 min ago' | grep -i -E 'error|exception|fail|panic'第 3 步:区分应用崩溃与资源问题
第 3 步:区分应用崩溃与资源问题
dmesg -T | tail -n 30
dmesg -T | grep -i -E 'segfault|oom|killed'第 4 步:验证启动命令本身
第 4 步:验证启动命令本身
systemctl cat myapp | sed -n '/\[Service\]/,$p'
# 手动以同用户同环境跑一遍命令观察报错
sudo -u appuser /opt/myapp/bin/start --config /etc/myapp.conf退出码 1 是通用失败、126/127 多为权限/找不到程序、137/9 是 SIGKILL(常见 OOM 或超时)——先看码再读日志方向不跑偏。