在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
命令来查看系统上正在运行的Java进程,方法是将输出管道接到grep
。
$ 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应用程序的工具。