从Linux ps输出确定运行类和jar

cvs*_*ave 2 java bash process

我的目标是列出STDOUT在Linux服务器上由java执行的类文件和.jar文件.我可以做一些getopts事情来获取-jar的args,但是其他进程确定了

ps -ef | grep java或ps -eo args | grep java

可能正在执行一个类文件,例如java -classpath/a/b/c myclass A1 A2.我担心的是,我正在寻找一个不完整的解决方案,其中充满了冗长的greps和awk的piplines,以解决应该(我认为)一个简单的查询.鉴于:

  1. 有些调用只是'java'而其他调用是java的完全限定路径名,

  2. 可以在命令行上设置各种不同(或没有)的java选项来运行进程,

  3. 一些进程调用.jar文件,一些调用.class文件,和

  4. 班上可能有人参加,

获取运行java可执行文件的简单列表的最佳方法是什么,例如:

abc.jar

mymainclass

xyz.jar

numainclass

我认为这可能是一个不常见的问题,但我似乎无法建立一个搜索字符串来定位此前的任何讨论.优雅的解决方案会很好; 现在我正在考虑将'-jar'条目加入到getops调用中,并考虑所有可能的组合来解析剩余的条目.我正在研究bash 3.x中的解决方案

谢谢!

Jör*_*ann 5

jdk5中引入的jps命令可能就是你要找的东西.使用 -l-m选项,它将输出pid主类和参数.添加-v将添加vm参数.