jps 是在linux系統中獲取該用戶已經啟動了那些java相關的程序,並將這些程序按進程ID 給列出,這個命令可以比較方便的在linux 下管理java相關的程序。
但是有的時候我們明明已經啟動了java 程序,再用jps 命令去查看時,會發現jps 根本沒有列出相應的進程ID,但是用ps -ef|grep java 卻發現有相關進程,這是怎麼回事了?
這個就要說明一下jps的程序的數據來源,它是通過檢查這個文件/tmp/hsperfdata_用戶名/pid下來進行顯示的。
jdk只要被啟動,則應該在這個文件/tmp/hsperfdata_用戶名/下保存進程ID信息。
如果這個文件/tmp/hsperfdata_用戶名/不存在,或則 讀寫權限沒有,那麼jps 則失效。
通過我自己的機器發現/tmp/hsperfdata_用戶名/權限有一定的問題,所以更改目錄權限,通過重啟java程序,再使用jps命令則發現問題得到解決
jps文件
文件中的pid