JPS未显示Tomcat进程

10

我正在Ubuntu 10.10上运行Tomcat 6.0.31,并使用Sun JDK(java-6-sun)。尽管Tomcat正在运行,但当我运行“jps”(Java虚拟机进程状态工具)时,其进程不会显示出来。我只能看到jps进程本身的pid。为什么Tomcat进程不会显示出来?


1
你尝试过以root身份运行jps吗?也许这是一个权限问题? - Pace
对于较新的JVM,@Pace的评论指向了正确的答案:jps -l显示的进程列表与sudo jps -l不同。当Tomcat作为root运行时,我必须使用sudo才能看到它。 - Lambart
4个回答

14
你可能遇到了Bug 7009828
在Java 6 Update 23和Java 6 Update 24中,Java在决定放置一些用于检测本地运行的JVM的文件时,会考虑到java.io.tmpdir属性。这意味着每个具有将此系统属性定义为与默认值/tmp不同的值的JVM实例对这些工具是不可见的。
特别是Tomcat安装默认将此属性设置为它们的安装temp文件夹。
所以:要么升级到Java 6 Update 25或更高版本(修复了该错误),要么使用-J-Djava.io.tmpdir=/path-to-tomcat-installation/temp启动jps

2

这对我来说似乎也是个问题...长时间运行的进程从jps输出中消失,而cron作业似乎是罪魁祸首。为什么Java设计者在决定将这些进程文件放在/tmp目录中时没有考虑到这一点呢? - ADTC

0

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

ls -ld /tmp/hsperfdata_*

每个目录将由拥有该Java进程的用户拥有。如果您感兴趣的进程不是您拥有的,则数据将无法访问。但是,如果您以root身份运行jstatd,则可以访问所有数据。
sudo jstatd <rest of options...>

0

检查您的VM参数是否存在-XX:-UsePerfData

如果是这样,请删除它并重新启动JVM。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接