JVM——使用工具——jps

概述

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

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

jps 用法

jps [-q] [-mlvV] [<hostid>]

 

參數說明

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

[hostid]:遠程服務器地址,jps 支持遠程調用

[protocol:][[//]hostname][:port][/servername]

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系統顯示如下:

 

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