jps没有显示Tomcat进程

我在Ubuntu 10.10上运行Tomcat 6.0.31并使用tge Sun JDK(java-6-sun)。 虽然tomcat正在运行,但是当我运行jps (Java虚拟机进程状态工具)时,它的进程并没有显示出来。 我看到的唯一输出是jps进程本身的pid。 为什么Tomcat进程不显示?

您可能正在运行Bug 7009828 :

在Java 6 Update 23和Java 6 Update 24中,Java在决定将jpsjconsolejvisulavm所需的一些文件jvisulavm以检测本地运行的JVM时,会考虑java.io.tmpdir属性。 这意味着将具有此系统属性定义为默认值( /tmp )以外的其他JVM实例对这些工具不可见。

特别是Tomcat安装默认将此属性设置为其安装temp文件夹。

所以: 要么升级到Java 6 Update 25或更高版本(修复了bug),要么使用-J-Djava.io.tmpdir=/path-to-tomcat-installation/temp启动jps

可能是由于/tmp/hsperfdata_$USER目录被系统上运行的cron作业删除了吗? 有关更多信息,请参阅http://www.semicomplete.com/blog/geekery/jps-shows-nothing-useful.html 。

检查你的vm args是否存在-XX:-UsePerfData

如果是,请将其删除,然后重新启动jvm

检查/ tmp / hsperfdata_ *目录的所有权,如下所示:

 ls -ld /tmp/hsperfdata_* 

每个目录都将由拥有该java进程的用户拥有。 如果您感兴趣的流程不属于您,则无法访问该数据。 但是,如果以root身份运行jstatd,则它将能够访问所有数据。

 sudo jstatd