实时监控指定进程资源占用有四种方法:1. top -p 直接跟踪PID;2. htop支持关键词过滤和树状视图;3. atop可记录历史并回放分析;4. Java进程需结合top -Hp、jstack和jstat进行线程级诊断。

要实时监控指定进程的资源占用,核心是把“进程筛选”和“动态刷新”结合起来。Linux 提供了多种方式,各有适用场景,不需安装额外工具也能快速上手。
用 top -p 监控单个或多个 PID
这是最直接、最通用的方法,适合快速盯住某个关键进程(比如 nginx、java 或自定义服务):
- 先查出目标进程的 PID,例如:pidof nginx 或 pgrep -f "java.*app.jar"
- 启动 top 并只跟踪该 PID:top -p 1234(支持多个 PID,用逗号分隔:top -p 1234,5678)
- 进入后可按 Shift+P 按 CPU 排序,Shift+M 按内存排序;按 c 显示完整命令行,避免截断
用 htop 精准过滤 + 树形视图
htop 更友好,支持鼠标操作和文本搜索,适合交互式排查:
- 安装(如未预装):sudo apt install htop(Debian/Ubuntu)或 sudo yum install htop(CentOS/RHEL)
- 运行 htop,按 F4 输入关键词(如 redis 或 python),自动高亮匹配进程
- 按 F5 切换树状视图,可直观看到子线程、子进程及其资源占比
- 选中进程后按 F9 可直接 kill,比 top 更快捷
用 atop 记录历史 + 回放分析
当问题偶发、需要事后复盘时,atop 是不可替代的选择:
- 启动实时监控:atop
- 按 g 查看整体 CPU,m 查看内存,d 查看磁盘 I/O,n 查看网络
- 记录数据到文件(后台长期运行):atop -w /var/log/atop.log 10(每 10 秒采样一次)
- 后续回放:atop -r /var/log/atop.log,用左右方向键切换时间点,精准定位某分钟的异常峰值
针对 Java 进程:深入到线程级 CPU 占用
Java 应用常因单个线程打满 CPU 导致整体卡顿,需结合系统与 JVM 工具:
- 用 top -Hp <pid> 查看该 Java 进程下所有线程的 CPU 使用率,找到最高耗时的 TID
- 将 TID 转为十六进制:printf "%x\n" 12345
- 用 jstack <pid> | grep -A 10 <hex_tid> 定位到具体 Java 方法栈
- 配合 jstat -gc <pid> 观察 GC 频率,判断是否内存压力引发线程阻塞


















