journalctl -u 服务名.service 可实时查看 systemd 管理服务的完整生命周期事件,需确保服务已注册为有效 unit 文件、带 .service 后缀且通过 systemctl list-units 验证;支持 -f 实时跟踪、-n 限定行数、--since 时间筛选,并可结合 grep 或 -p 精准定位状态变更与错误。

直接用 journalctl -u 服务名.service 就能实时看到启动、停止、失败等完整生命周期事件,关键在于服务必须由 systemd 管理,且日志中自带单元名和状态标记。
确认服务已注册为 systemd 单元
journalctl 只能查 systemd 管理的服务日志。确保你的自定义服务已创建有效的 unit 文件(如 /etc/systemd/system/myapp.service),并执行过 sudo systemctl daemon-reload。运行 systemctl list-units --type=service | grep myapp 能看到它,才说明注册成功。服务名必须带 .service 后缀,否则 -u 参数无法匹配。
查看启动与停止的原始日志
服务每次启停都会在 journal 中留下结构化记录,包含时间戳、PID、状态码等元数据:
-
journalctl -u myapp.service—— 查全部历史日志(默认倒序,最新在前) -
journalctl -u myapp.service -n 20—— 只看最近 20 行 -
journalctl -u myapp.service -f—— 实时跟踪,适合部署后观察启动过程 -
journalctl -u myapp.service --since "5 minutes ago"—— 快速聚焦刚发生的操作
精准筛选状态变更事件
纯日志可能混杂业务输出,可结合关键词或优先级快速定位控制流:
- 用
grep提取关键动作:journalctl -u myapp.service | grep -E "(Starting|Started|Stopping|Stopped|Failed)" - 只看错误与告警:
journalctl -u myapp.service -p err..notice(级别 3–5,覆盖 error/warning/notice) - 启动失败时重点找
Failed with result或exit code字样,它们通常紧随Starting行之后出现
验证服务是否真正进入 active 状态
日志里出现 Started 不代表服务已就绪——它只是 systemd 认为进程已启动。要确认实际可用性,需结合:
-
systemctl is-active myapp.service返回active才算成功 -
systemctl show myapp.service --property=ExecStart,Type,Restart查看启动命令与行为模式 - 若服务类型是
Type=notify,则必须调用sd_notify(3)告知 systemd 已就绪;否则 systemd 可能误判为启动超时











