IntelliJ IDEA运行Java应用时PID与ps aux显示不一致求助
IntelliJ IDEA中Java进程PID无法用ps aux查到的解决方法
原因分析
在IntelliJ IDEA中运行Java应用时,IDEA默认会通过辅助启动进程(如com.intellij.rt.execution.application.AppMain)加载你的主类,而非直接启动应用进程。此时ProcessHandle.current().pid()返回的是这个辅助进程的PID,若你的应用执行完毕后立即退出,辅助进程也会随之终止,导致你用ps aux查询时找不到对应PID。另外,若你仅通过主类名搜索进程,也可能错过目标——辅助启动进程的命令行显示为java -cp ... com.intellij.rt.execution.application.AppMain 你的主类名,进程名是java而非你的主类名。
解决步骤
- 确认进程存活状态:在IDEA运行应用后,不要立即关闭控制台,确保进程处于活跃状态,再执行
ps aux | grep [打印的PID]。 - 精准搜索进程:直接用打印的PID搜索,执行命令:
ps aux | grep <打印的PID>。如果想通过主类名定位,推荐用jps -l命令,它会直接显示Java进程的主类名和对应PID,比ps aux更适合Java进程排查。 - 修改IDEA运行配置:
- 打开IDEA的Run Configuration,选中你的应用配置。
- 点击
Modify options,勾选Disable launch optimization。 - 重新运行应用,此时IDEA会直接启动你的应用进程,
ProcessHandle.current().pid()返回的PID会与ps aux中显示的一致。
- 检查JDK兼容性:确保使用的JDK版本为11及以上,部分旧版JDK在IDEA环境下可能存在
ProcessHandle的PID获取异常,升级JDK可解决这类问题。
内容的提问来源于stack exchange,提问作者Gourav Kumar
相关产品推荐
相关产品推荐

