使用 jps 命令在 Linux 上检查 Java 进程

在系统上运行许多进程的情况下,使用 jps 命令快速识别 Java 进程非常有用。
30 位读者喜欢这篇文章。
Coffee beans

Pixabay。CC0。

在 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 选项。这很有用,部分原因是它需要的输入更少。

$ 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 应用程序开发和维护的工具。

接下来阅读什么
标签
Alan Formy-Duval Opensource.com Correspondent
Alan 拥有 20 年的 IT 经验,主要在政府和金融部门。他最初是一名增值经销商,之后转入系统工程领域。Alan 的背景是高可用性集群应用。他撰写了 Oracle Press/McGraw Hill 'Oracle Solaris 11 System Administration' 书籍中的 '用户和组' 以及 'Apache 和 Web 堆栈' 章节。

1 条评论

很有趣,我们也有类似的东西用于监控我们的 Java 微服务,输出看起来像... 对我们来说最大的区别是包含了服务监听的端口。

# java-services.sh status
java-services 正在运行。
374834 2021-10-05T17:15:02 8088 corp-customerweb-service-1.0.0-99|-Xmx2048m -Dspring.profiles.active=pr
447436 2021-10-05T17:15:03 8093 corp-warehousefilesweep-service-1.0.0-113|-Xmx2048m -Dspring.profiles.active=pr
537524 2021-10-05T17:15:03 8085 corp-housingrequest-service-1.0.0-185|-Xmx2048m -Dspring.profiles.active=pr
629720 2021-10-05T17:15:03 8100 corp-stdutil-service-1.0.0-229|-Xmx2048m -Dspring.profiles.active=pr
897432 2021-10-05T17:15:02 8095 corp-email-service-1.0.0-226|-Xmx2048m -Dspring.profiles.active=pr
981411 2021-10-05T17:15:02 8089 corp-directweb-service-1.0.0-190|-Xmx2048m -Dspring.profiles.active=pr
1122942 2021-10-05T17:15:02 8098 corp-exchange-service-1.0.0-197|-Xmx2048m -Dspring.profiles.active=pr
1531509 2021-10-05T17:15:02 8097 corp-document-service-1.0.0-33|-Xmx2048m -Dspring.profiles.active=pr
1553248 2021-10-05T17:15:02 8090 corp-cms-service-1.0.0-35|-Xmx2048m -Dspring.profiles.active=pr
1574057 2021-10-05T17:15:02 8091 corp-customerweblog-service-1.0.0-37|-Xmx2048m -Dspring.profiles.active=pr
1691363 2021-10-05T17:15:02 8086 corp-housingresponse-service-1.0.0-48|-Xmx2048m -Dspring.profiles.active=pr
1849529 2021-10-05T17:15:02 8083 corp-applookup-service-1.0.0-32|-Xmx2048m -Dspring.profiles.active=pr
2112741 2021-10-05T21:51:17 8087 corp-deploy-service-1.0.0-202|-Xmx2048m -Dspring.profiles.active=pr
2130221 2021-10-05T17:15:02 8096 corp-voip-service-1.0.0-143|-Xmx2048m -Dspring.profiles.active=pr
2714837 2021-10-05T17:15:02 8103 corp-ivr-service-1.2.0-86|-Xmx2048m -Dspring.profiles.active=pr
2925976 2021-10-05T17:15:02 8082 corp-facebook-service-1.0.0-237|-Xmx2048m -Dspring.profiles.active=pr
3098356 2021-10-06T09:38:20 8081 corp-azure-service-1.0.0-262|-Xmx2048m -Dspring.profiles.active=pr
3122901 2021-10-05T17:15:02 8092 corp-warehousedbsync-service-1.0.0-253|-Xmx2048m -Dspring.profiles.active=pr
3163783 2021-10-05T17:15:02 8101 corp-four11-service-1.0.0-78|-Xmx2048m -Dspring.profiles.active=pr
3332200 2021-10-06T12:25:18 8094 corp-websitedbsync-service-1.0.0-245|-Xmx8048m -Dspring.profiles.active=pr
3361733 2021-10-05T17:15:03 8099 corp-websitefilesweep-service-1.0.0-52|-Xmx2048m -Dspring.profiles.active=pr
3991842 2021-10-05T17:15:02 8102 corp-orig-service-1.0.0-41|-Xmx2048m -Dspring.profiles.active=pr

© . All rights reserved.