今天遇到了一个小问题,我想用jstat命令查看tomcat进程(PID=24493)的内存使用情况,命令如下:jstat -gc 24493。 然后就报错了,错误提示信息为 24493 not found。用 jps命令 查看java进程ID,居然没有输出结果。但确信java进程是存在的,用 ps -ef | grep java 能看到java进程。
原来,java进程把jvm perfdata存到了 /tmp/hsperfdata_{USER}/{PID} 文件里,我用的是非root用户启动的tomcat,pid为24493,所以就会生成这个文件:/tmp/hsperfdata_登录用户(非root用户)/24493。而之前,我做过一个修改,导致登录用户没有文件夹/tmp/hsperfdata_登录用户名 的写权限,所以导致出现了此问题。
最后我用root用户登录,索性把/tmp/hsperfdata_登录用户名 文件夹删除,然后再切换到ramos用户下,重启tomcat,让它重建/tmp/hsperfdata_登录用户名 文件夹,问题解决!
再次执行jstat -gc PID 1000(1秒刷新一次)则正常展示,如下图: