Linux 查看 Java 进程常用命令

1. jps(推荐,JDK 自带,最简单)

需要安装 JDK(仅 JRE 没有 jps)

bash

复制代码
# 只显示进程号+主类名
jps

# 显示完整主类路径
jps -l

# 显示JVM启动参数
jps -v

# 显示传入main方法的参数
jps -m

示例输出:

plaintext

复制代码
12580 org.apache.tomcat.startup.Bootstrap

2. ps + grep 通用方式(无需依赖 JDK)

bash

复制代码
# 基础查询
ps -ef | grep java

# 更干净,过滤掉grep自身进程
ps -ef | grep [j]ava

# 查看线程(jstack需要pid)
ps -T -p <进程PID>

3. pgrep 快速只获取 PID

bash

复制代码
# 列出所有java进程pid
pgrep java

# 连同进程信息
pgrep -af java

4. 结合 top 查看 Java 进程资源占用

bash

复制代码
# 全局看
top

# 只监控指定java进程
top -p <PID>

# H键显示线程(top界面内按H)

配套常用排查命令(拿到 PID 后)

bash

复制代码
# 打印线程栈
jstack <PID>

# 堆内存概况
jmap -heap <PID>

# 导出堆dump
jmap -dump:format=b,file=heap.hprof <PID>

进程信息解读

plaintext

复制代码
root     3755864       1  0 Aug04 ?        00:52:24 java --module-path /home/project/test-fws/lib --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED -server -Xms512m -Xmx1024m -jar /home/project/test-fws/jar/test-configure-server.jar --app.id=test-fws
  1. PID:3755864
  2. 运行用户:root
  3. 启动时间:Aug04(8 月 4 日启动)
  4. 运行时长:00:52:24 CPU 累计耗时 ≠ 进程运行时长
  5. 程序包:test-configure-server.jar
  6. JVM 参数:
    • -server:服务端模式
    • -Xms512m:初始堆内存 512MB
    • -Xmx1024m:最大堆内存 1GB
    • --add-opens:打破模块封装,反射兼容旧代码
  7. 业务参数:--app.id=test-fws

常用操作(直接复制,PID 替换为 3755864)

bash

复制代码
# 1.查看完整启动命令(确认有无被截断)
cat /proc/3755864/cmdline | tr '\0' ' ';echo

# 2.查看当前堆内存使用
jmap -heap 3755864

# 3.打印线程栈(排查死锁、线程阻塞)
jstack 3755864 > thread.log

# 4.导出堆dump(内存溢出分析,谨慎!会暂停进程)
jmap -dump:format=b,file=ctg-fws-heap.hprof 3755864

# 5.实时观察CPU/内存
top -p 3755864

# 6.优雅停止服务
kill 3755864
# 强制停止(尽量不用)
# kill -9 3755864
相关推荐
M78佐菲4 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
学长毕业设计4 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
Brilliantwxx4 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
东小西4 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西4 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午5 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
不怕犯错,就怕不做5 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
2601_962065255 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_5 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
richdata5 小时前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策