標籤:
1、介紹
用來查看基於HotSpot的JVM裡面中,所有具有存取權限的Java進程的具體狀態, 包括進程ID,進程啟動的路徑及啟動參數等等,與unix上的ps類似,只不過jps是用來顯示java進程,可以把jps理解為ps的一個子集。
使用jps時,如果沒有指定hostid,它只會顯示本地環境中所有的Java進程;如果指定了hostid,它就會顯示指定hostid上面的java進程,不過這需要遠程服務上開啟了jstatd服務,可以參看前面的jstatd章節來啟動jstad服務。
2、命令格式
jps [ options ] [ hostid ]
3、常用參數說明
-q 忽略輸出的類名、Jar名以及傳遞給main方法的參數,只輸出pid。
-m 輸出傳遞給main方法的參數,如果是內嵌的JVM則輸出為null。
-l 輸出應用程式主類的完整包名,或者是應用程式JAR檔案的完整路徑。
-v 輸出傳給JVM的參數。
-V 輸出通過標記的檔案傳遞給JVM的參數(.hotspotrc檔案,或者是通過參數-XX:Flags=<filename>指定的檔案)。
-J 用於傳遞jvm選項到由javac調用的java載入器中,例如,“-J-Xms48m”將把啟動記憶體設定為48M,使用-J選項可以非常方便的向基於Java的開發的底層虛擬機器應用程式傳遞參數。
4、伺服器標識
hostid指定了目標的伺服器,它的文法如下:
[protocol:][[//]hostname][:port][/servername]
protocol - 如果protocol及hostname都沒有指定,那表示的是與當前環境相關的本地協議,如果指定了hostname卻沒有指定protocol,那麼protocol的預設就是rmi。
hostname - 伺服器的IP或者名稱,沒有指定則表示本機。
port - 遠程rmi的連接埠,如果沒有指定則預設為1099。
Servername - 註冊到RMI註冊中心中的jstatd的名稱。
5、使用樣本
5.1、列出本地的Java進程
不帶任何參數
[email protected]:~$ jps 11644 Main 1947 12843 Jps |
帶-v參數
[email protected]:~$ jps -v 11644 Main -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:43467 -Dfile.encoding=GBK 1947 -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms40m -Xmx512m 12858 Jps -Denv.class.path=/home/fenglibin/java6/lib/dt.jar:/home/fenglibin/java6/lib/tools.jar::/usr/bin/libtool:/usr/bin/autoconf:/usr/local/BerkeleyDB.4.8/lib -Dapplication.home=/home/fenglibin/java6 -Xms8m |
帶-l參數
[email protected]:~$ jps -l 11644 com.alibaba.china.webww.core.Main 12870 sun.tools.jps.Jps 1947 |
5.2、列出遠端Java進程
在jstatd章節,我們有通過:
rmiregistry 2020&jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName |
啟動了名為AlternateJstatdServerName的jstatd服務,那麼我們此時就可以通過該服務列出其有許可權訪問的Java進程。
[email protected]:~$ jps 10.1.1.234:2020/AlternateJstatdServerName 29556 Bootstrap 28671 WSPreLauncher 2602 RegistryImpl 18272 Test 2603 Jstatd |
jps命令(Java Virtual Machine Process Status Tool)