我在Ubuntu 10.10上运行Tomcat 6.0.31并使用tge Sun JDK(java-6-sun)。虽然tomcat正在运行,但是当我运行jps
(Java虚拟机进程状态工具)时,它的进程并没有显示出来。我看到的唯一输出是jps进程本身的pid。为什么Tomcat进程不显示?
答案 0 :(得分:14)
您可能遇到Bug 7009828:
在Java 6 Update 23和Java 6 Update 24中,Java在决定放置java.io.tmpdir
,jps
和{{1}所需文件的位置时会考虑jconsole
属性检测本地运行的JVM。这意味着将这个系统属性定义为默认值(jvisulavm
)之外的每个JVM实例对这些工具都是不可见的。
Tomcat安装特别默认将此属性设置为其安装/tmp
文件夹。
所以:要么升级到Java 6 Update 25或更高版本(修复了错误),要么temp
启动jps
。
答案 1 :(得分:2)
可能是因为/tmp/hsperfdata_$USER
目录被系统上运行的cron作业删除了吗?有关详细信息,请参阅http://www.semicomplete.com/blog/geekery/jps-shows-nothing-useful.html。
答案 2 :(得分:0)
检查你的vm args是否存在-XX:-UsePerfData
。
如果是,请将其删除,然后重新启动jvm
答案 3 :(得分:0)
检查/ tmp / hsperfdata_ *目录的所有权,如下所示:
ls -ld /tmp/hsperfdata_*
每个目录都归拥有该java进程的用户所有。如果您感兴趣的流程不属于您,那么数据将无法访问。但是,如果以root身份运行jstatd,则它将能够访问所有数据。
sudo jstatd <rest of options...>