jps命令(Java Virtual Machine Process Status Tool)(轉)

1、介紹

    用來查看基於HotSpotJVM裏面中,所有具有訪問權限的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 - 如果protocolhostname都沒有指定,那表示的是與當前環境相關的本地協議,如果指定了hostname卻沒有指定protocol,那麼protocol的默認就是rmi

hostname - 服務器的IP或者名稱,沒有指定則表示本機。

port - 遠程rmi的端口,如果沒有指定則默認爲1099

Servername - 註冊到RMI註冊中心中的jstatd的名稱。

 

5、使用示例

5.1、列出本地的Java進程

不帶任何參數

fenglibin@libin:~$ jps

11644 Main

1947 

12843 Jps

-v參數

fenglibin@libin:~$ 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參數

fenglibin@libin:~$ 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

啓動了名爲AlternateJstatdServerNamejstatd服務,那麼我們此時就可以通過該服務列出其有權限訪問的Java進程。

fenglibin@libin:~$ jps 10.1.1.234:2020/AlternateJstatdServerName

29556 Bootstrap

28671 WSPreLauncher

2602 RegistryImpl

18272 Test

2603 Jstatd


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章