在 Linux 上使用 jps 命令檢查 Java 進程
在 Linux 中,有一些用於查看系統上運行進程的命令。進程是指由內核管理的正在進行的事件。每啟動一個應用程序時,就會產生一個進程,但也有許多在計算機後台運行的進程,如保持系統時間準確的進程、監聽新文件系統的進程、索引化文件的進程等。有一些可以用來監測這些進程的實用程序,比如包含在 procps-ng 包 中的程序,但它們往往都是對各種進程通用的。它們會查看計算機上的所有進程,你可以根據需要過濾結果列表。
在 Linux 中,可以通過 ps
命令查看進程。這是查看當前系統上運行進程最簡單的方法。
$ ps
PID TTY TIME CMD
4486 pts/0 00:00:00 bash
66930 pts/0 00:00:00 ps
你也可以通過 ps
命令,並配合結果輸出管道符進行 grep
,從而查看系統上運行的 Java 進程,。
$ 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 有自己專屬的進程監視器。 Java 虛擬機進程狀態 (jps)工具可以幫你掃描系統上所有運行的 Java 虛擬機(JVM)實例。
要想實現與 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
命令的默認輸出包含進程標識符,類名或 Jar 文件名。
$ jps
67604 jboss-modules.jar
69430 Jps
注意: jps
的手冊頁指出此命令是試驗性且不受支持的。儘管如此,它仍然是一個不錯的選擇,因為一個系統通常運行著許多進程,這種只識別 Java 進程的快速方法是很有用的。
當下的 Java 仍然是一種流行的語言,所以熟悉 Java 開發工具包和運行時環境仍然很重要。它們包含著許多適用於 Java 應用程序開發和維護的工具。
via: https://opensource.com/article/21/10/check-java-jps
作者:Alan Formy-Duval 選題:lujun9972 譯者:unigeorge 校對:turbokernel
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive