可通过journalctl实时跟踪进程生命周期,需结合-u指定服务单元、过滤优先级与时间,并识别Started/Starting/Stopped/Stopping/Failed等关键词及_PID/_COMM等字段精确定位事件。
可以通过 journalctl 实时跟踪进程的启动、运行、退出等状态变化,关键在于结合服务单元名、日志优先级和时间过滤,精准捕获 systemd 管理的进程生命周期事件。
systemd 服务的日志默认以服务单元名为标识。使用 -u 选项可聚焦特定服务:
journalctl -u sshd.service -f:持续输出 sshd 的日志,包括启动成功、监听端口、子进程派生、异常退出等信息journalctl -u nginx.service --since "2 minutes ago":查看最近两分钟内 nginx 的启停与重载记录systemctl list-units --type=service --state=running 先确认活跃服务列表进程状态变化通常由 systemd 自动记录,关注以下典型日志行即可判断运行状态:
Started OpenSSH server daemon)Failed with result 'exit-code')main process exited 或 code=exited, status=1/FAILURE 行,表示主进程非正常退出当需区分同一服务的多个实例或排查具体进程行为时,可利用日志中的进程元数据:
journalctl _PID=12345:按进程 ID 过滤该进程及其子进程产生的所有日志journalctl _COMM=nginx:匹配命令名(不带路径),适合快速定位二进制名一致的进程journalctl _SYSTEMD_UNIT=myapp.service:比 -u 更底层,适用于单元名被动态生成的场景(如模板实例 [email protected])为快速识别状态流转,可组合 grep 与颜色标记:
journalctl -u myapp.service -n 100 | grep --color=always -E "(Started|Starting|Stopped|Stopping|Failed|exited)"--no-hostname 和 --output=short-iso 可减少干扰信息,突出时间与状态关键词journalctl -u myapp.service -o json | jq 'select(.MESSAGE | contains("Started") or .PRIORITY == "3")' 可结构化提取错误与启动事件