今天遇到了一個小問題,我想用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秒刷新一次)則正常展示,如下圖: