在 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 应用程序开发和维护的工具。
1 条评论