日期:2014-05-16  浏览次数:20388 次

【一个小问题】jstat PID not found产生的原因

声明:我的文章都是在实际工作中遇到并解决问题后撰写的,可能你早就一清二楚了,也可能对你没有任何帮助,喜欢就请顶一下,不喜也请勿喷。就像足球一样, 不喜欢中国足球的就请不要关注,你可以去看乒乓球、羽毛球,甚至,冰壶!但不要去骂他们,毕竟还有很多人痴心地喜欢国足,我就是其中之一。

?

我今天遇到了一个小问题,我想用jstat命令查看tomcat进程(PID=14472)的内存使用情况,命令如下:jstat -gcutil 14472。 然后就报错了,错误提示信息为 14472 not found。用 jps命令 查看java进程ID,居然没有输出结果。但确信java进程是存在的,用 ps -ef | grep java 能看到java进程。

?

百度了下,找到了这篇文章,http://dikar.iteye.com/blog/781083?,看完后问题就解决了,记录下来,以便日后使用。

?

原来,java进程把jvm perfdata存到了 /tmp/hsperfdata_{USER}/{PID} 文件里,我用的是ramos用户启动的tomcat,pid为14472,所以就会生成这个文件:/tmp/hsperfdata_ramos/14472 。而之前,我做过一个修改,导致ramos用户没有文件夹/tmp/hsperfdata_ramos的写权限,所以导致出现了此问题。

?

最后我用root用户登录,索性把/tmp/hsperfdata_ramos文件夹删除,然后再切换到ramos用户下,重启tomcat,让它重建/tmp/hsperfdata_ramos文件夹,问题解决!