如何识别进程对应的Java应用?Ubuntu下区分Eclipse进程方法
如何识别Java进程对应的应用(以Ubuntu 17.04上的Eclipse为例)
嘿,这俩问题本质上是相通的,我给你分享几个在Ubuntu系统上亲测好用的方法,帮你快速定位到目标Java进程:
1. 查看完整的进程命令行参数
ps -A | grep java只显示进程ID和简短命令,信息量不够。换成下面的命令,能看到完整的启动参数:
- 运行
ps -ef | grep java,输出里会包含Java进程的启动类、jar包路径或者应用专属的参数。比如Eclipse的进程一定会带有org.eclipse.equinox.launcher.Main这个主类名,还会有-Declipse.home=xxx这类指向Eclipse安装目录的参数,一眼就能认出来。 - 如果参数太长被截断,试试
pgrep -fl java,它会自动输出完整的进程ID和命令行内容。
2. 用Java自带的jps工具(强烈推荐)
如果你装了JDK,jps是专门为Java进程设计的工具,比ps更精准:
- 直接运行
jps -v,它会列出所有Java进程的PID、主类名/ jar包名,以及JVM启动参数。Eclipse的进程会明确显示org.eclipse.equinox.launcher.Main,参数里还能看到Eclipse的配置路径,完全不会和其他Java进程混淆。
3. 查看进程的工作目录
每个进程都有自己的工作目录,Eclipse的工作目录通常和它的启动路径或你的项目目录相关:
- 先从
ps或jps的输出里拿到可疑进程的PID,然后运行ls -l /proc/<PID>/cwd(把<PID>换成实际的进程ID)。这个命令会显示一个符号链接,指向进程当前的工作目录。如果是Eclipse,你大概率会看到eclipse相关的文件夹,或者你平时开发的项目目录。
4. 检查进程打开的文件
Java进程运行时会加载很多专属文件,比如Eclipse的插件、配置文件等:
- 运行
lsof -p <PID>,这个命令会列出该进程打开的所有文件、端口和设备。在输出里找eclipse.ini、plugins目录下的jar包,或者你的项目文件,一旦找到这些特征文件,就能确定这就是Eclipse对应的进程了。
针对你在Ubuntu 17.04上的场景:如果你的Eclipse是从软件中心安装的,它的启动路径可能在/usr/lib/eclipse;如果是用snap包安装的,路径会在~/snap/eclipse下。用上面的方法1或2,很快就能锁定对应的进程。
内容的提问来源于stack exchange,提问作者Joshua Fox
相关产品推荐
相关产品推荐

