一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何通过 Journalctl 查看系统进程的运行状态流

时间:2026-07-26 08:35:05 编辑:袖梨 来源:一聚教程网

可通过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:服务已成功启动(如 Started OpenSSH server daemon
  • Starting:服务正在启动中(常伴随 ExecStart 命令执行)
  • StoppedStopping:服务已终止或正在关闭
  • Failed:启动失败,通常后跟原因(如 Failed with result 'exit-code'
  • main process exitedcode=exited, status=1/FAILURE 行,表示主进程非正常退出

结合 PID 和进程字段精确定位

当需区分同一服务的多个实例或排查具体进程行为时,可利用日志中的进程元数据:

  • 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")' 可结构化提取错误与启动事件

热门栏目