使用 ps 命令 (最基础)
ps 命令用于显示当前系统的进程状态,这是查看进程最直接的方式。

查找所有 Java 进程
ps -ef | grep java
命令解释:
ps -ef: 显示所有进程的详细信息。-e: 显示所有进程 (all processes)。-f: 以完整的格式显示 (full format)。
- 管道符,将
ps命令的输出作为grep命令的输入。 grep java: 从输入中过滤出包含 "java" 字符串的行。
输出示例:
# ps -ef | grep java
root 1234 1233 0 10:30 pts/0 00:00:10 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -jar my-app.jar
tomcat 5678 1234 0 10:31 ? 00:00:05 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.util.logging.config.file=logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -jar /path/to/tomcat/bin/bootstrap.jar
user 9012 5678 0 10:32 ? 00:00:02 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -jar another-service.jar
重要提示: 你会看到 grep java 这个进程本身也被列出来了,你可以使用 grep -v grep 来排除它:
ps -ef | grep java | grep -v grep
查找特定 Java 进程(更精确)
如果你知道 Java 进程的关键词(JAR 包名或主类名),可以直接用 grep 过滤,这样结果更干净。

# 查找包含 "my-app.jar" 的 Java 进程 ps -ef | grep "my-app.jar" # 查找包含 "MainClass" 的 Java 进程 ps -ef | grep "MainClass"
使用 jps 命令 (最推荐)
jps (Java Virtual Machine Process Status Tool) 是 JDK 自带的一个轻量级命令行工具,专门用于查看 Java 进程,它比 ps 更精确,因为它只显示 Java 进程。
查看所有 Java 进程
jps
输出示例:
1234 Jps
5678 Bootstrap
9012 my-app.jar
输出解释:
- 第一列是 Java 进程的 ID (PID)。
- 第二列是 Java 进程的主类名或 JAR 文件名。
查看详细信息(显示主类参数)
jps -l
输出示例:

1234 sun.tools.jps.Jps
5678 org.apache.catalina.startup.Bootstrap
9012 /path/to/my/my-app.jar
-l(小写 L): 显示主类的完整路径或 JAR 文件的完整路径。
显示传递给 JVM 的参数
jps -v
输出示例:
9012 -Djava.util.logging.config.file=logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512m -Xmx1024m
-v: 显示传递给 JVM 的参数(如-Xms,-Xmx等)。
显示启动参数
jps -V
-V: 显示通过-XX:+PrintFlagsFinal筇启动参数传递给 JVM 的参数。
使用 pgrep 命令 (简洁高效)
pgrep 是一个更现代、更简洁的工具,可以根据进程名、进程名等属性查找进程 ID。
查找所有 Java 进程的 PID
pgrep java
输出示例:
1234
5678
9012
这只会返回进程 ID,非常简洁。
结合 kill 命令使用
pgrep 非常适合用于脚本中,比如直接杀死所有 Java 进程:
# 强制杀死所有 java 进程 kill -9 $(pgrep java)
使用 top / htop 命令 (实时监控)
top 和 htop 是动态的进程查看器,可以实时监控系统资源的使用情况。
使用 top
top
进入 top 界面后,你可以:
- 按
P(大写) 按 CPU 使用率排序。 - 按
M(大写) 按 内存使用率排序。 - 按
>或<切换排序字段。 - 按
c切换显示完整的命令行。 - 按
k然后输入 PID 来杀死进程。
你可以在 top 界面中直接找到 java 进程并观察其资源消耗。
使用 htop (更友好的 top)
如果你的系统安装了 htop,强烈推荐使用它,界面更直观,操作更方便。
htop
htop 默认会高亮显示正在运行的程序,你可以用方向键选择 java 进程,按 F9 可以直接杀死进程。
总结与最佳实践
| 方法 | 命令 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
ps |
ps -ef \| grep java |
系统自带,通用性强 | 可能会误 grep 到 grep 进程,不够精确 | 快速、临时查看,任何 Linux 环境 |
jps |
jps -lv |
JDK自带,最精确,专为 Java 设计 | 需要安装 JDK,非 root 用户可能看不到其他用户进程 | Java 开发和运维的首选,查看 JVM 详情 |
pgrep |
pgrep java |
简洁,只返回 PID,适合脚本 | 功能相对单一,不如 jps 信息丰富 |
编写 Shell 脚本时快速获取 PID |
top/htop |
top / htop |
实时监控资源,动态交互 | 信息量大,需要手动筛选和操作 | 实时监控 Java 进程的 CPU、内存使用情况 |
推荐的工作流程:
-
快速查找:当你只是想快速知道有哪些 Java 进程在运行时。
jps
-
获取详细信息:当你需要知道 Java 进程的完整路径、启动参数时。
jps -lv
-
实时监控性能:当你需要观察 Java 进程的资源占用情况时。
htop # (或 top) # 在 htop 中找到 java 进程,按 P 或 M 排序
-
脚本化操作:当你需要在脚本中自动化处理 Java 进程时。
# 重启一个服务 kill $(pgrep -f "my-app.jar") nohup java -jar my-app.jar > app.log 2>&1 &
