jps命令


概述

jps 命令類似與 linux 的 ps 命令,但是它只列出系統中所有的 Java 應用程序。 通過 jps 命令可以方便地查看 Java 進程的啟動類、傳入參數和 Java 虛擬機參數等信息。

如果在 linux 中想查看 java 的進程,一般我們都需要 ps -ef | grep java 來獲取進程 ID。
如果只想獲取 Java 程序的進程,可以直接使用 jps 命令來直接查看。

jps 用法

 
 

參數說明

-q:只輸出進程 ID
-m:輸出傳入 main 方法的參數
-l:輸出完全的包名,應用主類名,jar的完全路徑名
-v:輸出jvm參數
-V:輸出通過flag文件傳遞到JVM中的參數

[hostid]:遠程服務器地址,jps 支持遠程調用 [protocol:][[//]hostname][:port][/servername] 

示例一:jps

無參數:顯示進程的ID 和 類的名稱
 
 

jps 不帶參數,默認顯示 進程ID 和 啟動類的名稱。

示例二:jps -q

參數 -q 只輸出進程ID,而不顯示出類的名稱


 
 

示例三:jps -m

參數 -m 可以輸出傳遞給 Java 進程(main 方法)的參數。


 
 

示例四:jps -l

參數 -l 可以輸出主函數的完整路徑(類的全路徑)。


 
 

示例五:jps -v

參數 -v 可以顯示傳遞給 Java 虛擬機的參數。


 
 

獲取遠程服務器 jps 信息

jps 支持查看遠程服務上的 jvm 進程信息。如果需要查看其他機器上的 jvm 進程,需要在待查看機器上啟動 jstatd 服務。

開啟 jstatd 服務

啟動 jstatd 服務,需要有足夠的權限。 需要使用 Java 的安全策略分配相應的權限。

創建 jstatd.all.policy 策略文件。

grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; 

啟動 jstatd 服務器

jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.31.241

-J 參數是一個公共的參數,如 jps、 jstat 等命令都可以接收這個參數。 由於 jps、 jstat 命令本身也是 Java 應用程序, -J 參數可以為 jps 等命令本身設置 Java 虛擬機參數。

-Djava.security.policy:指定策略文件
-Djava.rmi.server.hostname:指定服務器的ip地址(可忽略)

默認情況下, jstatd 開啟在 1099 端口上開啟 RMI 服務器。

 
 

jps 原理

java程序在啟動以后,會在java.io.tmpdir指定的目錄下,就是臨時文件夾里,生成一個類似於hsperfdata_User的文件夾,這個文件夾里(在Linux中為/tmp/hsperfdata_{userName}/),有幾個文件,名字就是java進程的pid,因此列出當前運行的java進程,只是把這個目錄里的文件名列一下而已。 至於系統的參數什么,就可以解析這幾個文件獲得。

window系統顯示如下:


 
 

從文件中可以看出 1864、4296、12600 跟上面的 jps 命令輸出的進程 ID 一致。



作者:jijs
鏈接:https://www.jianshu.com/p/d39b2e208e72
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM