最近想著把工作中使用過的java命令都梳理一下,方便日後查閱。雖然這類文章很多,但自己梳理總結後,還是會有一些新的收穫。這也是這篇筆記的由來。 ...
你好,我是阿光。
最近想著把工作中使用過的java命令都梳理一下,方便日後查閱。雖然這類文章很多,但自己梳理總結後,還是會有一些新的收穫。這也是這篇筆記的由來。
今天先聊聊 jps
命令。
命令概述⭐
jps
命令是JDK提供的一個工具,用於查看目標系統上的Java進程基本信息(進程ID, 啟動類,啟動參數等)。命令在JDK安裝目錄的bin目錄下,比如在我的window下D:\Java\jdk1.8.0\bin\jps.exe
。但JRE沒有提供這個命令。不過從Java9模塊化開始,已經不區分JDK和JRE了。
這個命令只會檢測到目標系統上HotSpot版本的,具有訪問許可權的JVM信息。
命令的官方文檔可查看這個地址The jps Command (oracle.com)
命令用法⛵
我的演示環境是在window11, jdk17版本下
我們可以通過jps -h
或者 jps --help
或者 jps -help
查看這個命令的基本用法:
jps --help
usage: jps [--help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
-? -h --help -help: Print this help message and exit.
中括弧里的選項都是可選的,最簡單的就是jps
:
jps
35936 Jps
1076 RemoteMavenServer36
這裡沒有指定主機,所以只會查找本地主機上的JVM。第一列是進程ID,第二列是啟動類名。可以看到,jps命令本身也是一個Java進程,它的啟動類是Jps。
-q
選項會讓命令只輸出進程ID,如下:
jps -q
35936
1076
-mlvV
選項可以任意指定一個,也可以同時指定多個,它們可以隨意組合。
-m
選項會顯示傳遞給main方法的參數,即程式自定義的一些參數。-l
選項會顯示啟動類的完整包名稱或者啟動JAR的完整路徑名。-v
選項會顯示傳遞給虛擬機的參數,比如-Dxxx=v形式指定的參數,-Xms128M參數等。-V
大V選項只會輸出PID和類名,jps
和jps -V
的輸出是一樣的。
這裡我本地運行了一個Java進程,啟動類是Main,並且指定了一些自定義的參數.
- 列出main方法參數:jps -m
jps -m
16596 Main test=11 測試參數:a
18796 Jps -m
- 列出啟動類全名:jps -l
jps -l
16596 com.ggy.softman.Main
11836 jdk.jcmd/sun.tools.jps.Jps
- 列出虛擬機參數:jps -v
jps -v
29716 Main -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8
11388 Jps -Dapplication.home=D:\Java\jdk-17.0.6.10 -Xms8m -Djdk.module.main=jdk.jcmd
- 組合命令,輸出信息更豐富:jps -lmv
jps -lmv
31948 com.ggy.softman.Main test=11 測試參數:a -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8
29008 jdk.jcmd/sun.tools.jps.Jps -lmv -Dapplication.home=D:\Java\jdk-17.0.6.10 -Xms8m -Djdk.module.main=jdk.jcmd
該命令也可以顯示遠程主機的Java進程信息,只要在命令的最後帶上hostid。這種情況基本使用很少,這裡也沒演示了,可以查看官網文檔。
連接遠程主機時,遠程主機上必須運行
jstatd
命令。