You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据固定名称片段获取动态命名的Java进程PID?

解决Java进程PID动态获取问题

我来帮你搞定这个问题~你之前的命令返回空,核心原因是你用$NF匹配"backend",但$NF指的是命令行的最后一个参数,看你的进程命令:

testuser 37126 1 0 2018 ? 01:56:24 java -jar backend76465465.jar -XX:-OmitStackTraceInFastThrow --spring.profiles.active=server

最后一个参数是--spring.profiles.active=server,根本不是包含"backend"的jar文件名,所以匹配自然失败。

给你几个靠谱的解决方案:

方案1:遍历所有字段匹配(最通用)

这个方法会检查进程命令行的每一个字段,只要找到包含"backend"的字段就输出PID:

ps -eaf | awk '/java/ {for(i=1;i<=NF;i++) if($i ~ /backend/) print $2}'
  • /java/先过滤出Java进程,避免无关进程干扰
  • 遍历每个字段i,找到匹配backend的字段后,输出第2个字段(也就是PID)

方案2:精准定位jar文件所在字段

观察你的命令行,backendxxxx.jar是在java -jar之后的那个字段,对应命令行的倒数第3个字段(NF-2),可以直接定位匹配:

ps -eaf | awk '/java/ && $(NF-2) ~ /backend/ {print $2}'

方案3:用pgrep简化操作(最简洁)

pgrep命令支持直接匹配整个命令行内容,用-f选项就能轻松搞定:

pgrep -f "backend"

这个命令会直接返回所有命令行包含"backend"的进程PID,不需要额外的管道处理,非常方便。

内容的提问来源于stack exchange,提问作者firasKoubaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:05:57