在 Linux 上使用 jps 命令檢查 Java 進(jìn)程
系統(tǒng)上運行著諸多進(jìn)程,通過
jps
命令能夠快速有效識別 Java 進(jìn)程。
在 Linux 中,有一些用于查看系統(tǒng)上運行進(jìn)程的命令。進(jìn)程是指由內(nèi)核管理的正在進(jìn)行的事件。每啟動一個應(yīng)用程序時,就會產(chǎn)生一個進(jìn)程,但也有許多在計算機(jī)后臺運行的進(jìn)程,如保持系統(tǒng)時間準(zhǔn)確的進(jìn)程、監(jiān)聽新文件系統(tǒng)的進(jìn)程、索引化文件的進(jìn)程等。有一些可以用來監(jiān)測這些進(jìn)程的實用程序,比如包含在 procps-ng 包 中的程序,但它們往往都是對各種進(jìn)程通用的。它們會查看計算機(jī)上的所有進(jìn)程,你可以根據(jù)需要過濾結(jié)果列表。
在 Linux 中,可以通過 ps
命令查看進(jìn)程。這是查看當(dāng)前系統(tǒng)上運行進(jìn)程最簡單的方法。
$ ps
PID TTY TIME CMD
4486 pts/0 00:00:00 bash
66930 pts/0 00:00:00 ps
你也可以通過 ps
命令,并配合結(jié)果輸出管道符進(jìn)行 grep
,從而查看系統(tǒng)上運行的 Java 進(jìn)程,。
$ ps ax |grep java
67604 pts/1 Sl+ 0:18 /usr/lib/jvm/java-11-openjdk-11.0.12.0.7-4.fc34.x86_64/bin/java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true --add-exports=java.desktop/sun.awt=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED -Dorg.jboss.boot.log.file=/home/alan/wildfly/24.0.1/standalone/log/server.log -Dlogging.configuration=file:/home/alan/wildfly/24.0.1/standalone/configuration/logging.properties -jar /home/alan/wildfly/24.0.1/jboss-modules.jar -mp /home/alan/wildfly/24.0.1/modules org.jboss.as.standalone -Djboss.home.dir=/home/alan/wildfly/24.0.1 -Djboss.server.base.dir=/home/alan/wildfly/24.0.1/standalone
然而,OpenJDK 有自己專屬的進(jìn)程監(jiān)視器。Java 虛擬機(jī)進(jìn)程狀態(tài)(jps)工具可以幫你掃描系統(tǒng)上所有運行的 Java 虛擬機(jī)(JVM)實例。
要想實現(xiàn)與 ps
命令類似的輸出,可以使用 -v
選項。這很實用,這與 ps
相比,可以減少你的輸入。
$ jps -v
67604 jboss-modules.jar -D[Standalone] -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true --add-exports=java.desktop/sun.awt=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED -Dorg.jboss.boot.log.file=/home/alan/wildfly/24.0.1/standalone/log/server.log -Dlogging.configuration=file:/home/alan/wildfly/24.0.1/standalone/configuration/logging.properties
jps
命令的默認(rèn)輸出包含進(jìn)程標(biāo)識符,類名或 Jar 文件名。
$ jps
67604 jboss-modules.jar
69430 Jps
注意: jps
的手冊頁指出此命令是試驗性且不受支持的。盡管如此,它仍然是一個不錯的選擇,因為一個系統(tǒng)通常運行著許多進(jìn)程,這種只識別 Java 進(jìn)程的快速方法是很有用的。
當(dāng)下的 Java 仍然是一種流行的語言,所以熟悉 Java 開發(fā)工具包和運行時環(huán)境仍然很重要。它們包含著許多適用于 Java 應(yīng)用程序開發(fā)和維護(hù)的工具。