您的位置:

jps命令详解

Java Virtual Machine Process Status Tool或者简称jps工具是JDK中非常有用的一个命令行工具,可以用来列出正在运行的Java进程信息。在进行Java开发或者运维工作中经常需要使用jps来诊断问题或者管理Java进程。

一、jps概述

jps命令可以列出正在运行的Java进程的PID(进程ID)和进程名。它可以帮助开发者和运维人员快速获取Java进程信息,方便进行系统管理或问题排查。jps命令是Java JDK自带的一个命令行工具,无需安装配置。

二、jps命令用法

以下是jps命令的基本使用语法:

jps [ options ] [ hostid ]

其中,options选项的常用参数如下:

  • -q 显示类名或Jar文件名,而不显示其他信息
  • -m 输出虚拟机进程启动时的主类名和参数
  • -l 输出全名,包括包名
  • -v 输出虚拟机进程启动时的JVM参数
  • -V 输出虚拟机进程启动时的JVM参数和指令

hostid表示要查询的远程主机的名称或IP地址。

以下是一些jps命令的使用示例:

$ jps
//输出当前正在运行的Java进程PID和进程名
10245 Jps
8322 JpsTest

$ jps -q
//仅输出Java进程名
Jps
JpsTest

$ jps -l
//输出全类名,包括包名
10245 sun.tools.jps.Jps
8322 com.example.JpsTest

$ jps -m
//输出虚拟机进程启动时的主类名和参数
10245 Jps -m
8322 com.example.JpsTest foo bar

$ jps -v
//输出虚拟机进程启动时的JVM参数
10245 Jps -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home -Xms8m
8322 JpsTest -Djava.util.logging.config.file=/Users/username/Documents/workspace/JpsTest/src/logging.properties

三、使用jps诊断问题

jps命令可以帮助我们诊断Java进程相关的问题。例如,我们可以使用jps找到Java进程的PID,并使用jstack命令来生成线程堆栈跟踪信息来诊断死锁或其他问题。以下是一个使用jstack命令的简单示例:

$ jps
//查找Java进程的PID
8322 JpsTest

$ jstack 8322
//生成线程堆栈跟踪信息
...

四、使用jps管理Java进程

jps命令可以帮助我们管理Java进程。例如,我们可以使用jps命令找到Java进程的PID,并使用kill命令来关闭Java进程。以下是一个使用kill命令关闭Java进程的示例:

$ jps
//查找Java进程的PID
8322 JpsTest

$ kill 8322
//关闭Java进程

五、jps与JMX

jps命令与JMX(Java Management Extensions)API结合使用非常有用。JMX是一种Java平台的管理和监控API,它提供了一套标准的接口来访问Java应用程序内部的管理和监控信息。

jps命令可以列出正在运行的Java进程的JMX端口,我们可以通过这些端口连接到JVM,并获取相关信息。以下是一个使用JMX获取Java Heap内存使用情况的示例:

$ jps
//查找Java进程的PID和JMX端口
8322 JpsTest 5678

$ jstat -gcutil 8322
//获取Java Heap内存使用情况
...

六、小结

jps命令是Java JDK中非常有用的一个命令行工具,可以用于列出正在运行的Java进程信息、诊断Java进程相关的问题、管理Java进程、以及与JMX API结合使用等。以输出结果为主的JVM工具中,jps命令的作用非常重要,它可以帮助我们快速检查Java程序中可能存在的问题并解决。