一、问题描述:
Ubuntu 10.10版本,同个JDK 1.6版本,启动tomcat后,使用jps无法获取本机Java进程。
二、jps工作原理:
1. java进程启动时,若没有指定 -Djava.io.tmpdir参数,则会默认新建 /tmp/hsperfdata_${user_name} 文件
2. jps查询java进程时会去扫描 /tmp/hsperfdata_${user_name} 文件
三、jps不能正常工作,可能存在的原因:
1. 启动tomcat的java与jps不同版本
2. jps 因为权限问题无法读取 /tmp/hsperfdata_${user_name} 文件
3. java进程启动时指定 -Djava.io.tmpdir参数,即不采用默认值
四、问题定位:
1. ps查询java启动的参数
ps -ef | grep java | grep "Djava.io.tmpdir"
发现tomcat确实有指定Djava.io.tmpdir 参数2. 修改tomcat默认的catalina.sh文件,修改如下
if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR=/tmp
fi3.重新启动tomcat,重新执行jps,问题解决

在Ubuntu 10.10环境下,使用JDK 1.6启动Tomcat后,通过jps命令未能列出Java进程。问题可能源于不同版本的Java、权限问题或自定义的-Djava.io.tmpdir参数。解决方案包括检查java启动参数,特别是-Djava.io.tmpdir设置,以及确保jps有权限访问相关文件。
989

被折叠的 条评论
为什么被折叠?



