你有没有遇到过这种情况:网站突然变慢,登录服务器一看,CPU直接飙到100%,但根本不知道是哪个程序在作怪?这时候,光靠 top 命令扫一眼可能还不够,得用上真正的进程监控工具来揪出“元凶”。
什么是进程监控工具
简单说,就是能实时查看系统中每个进程资源占用情况的工具。比如谁在疯狂吃CPU、谁占了大量内存、哪个进程突然频繁读写磁盘。它们不只能看当前状态,还能记录历史数据,帮你回溯问题。
常见的场景比如:公司后台接口响应变慢,开发说代码没问题,运维一查发现是个定时备份脚本跑着没停,把IO占满了——这就是进程监控该出手的时候。
几个实用的命令行工具
Linux 下最常用的还是命令行工具,轻量又高效。
top 命令大家都知道,但其实 htop 更友好。它支持颜色显示、鼠标操作,还能直接看到进程树结构:
htop如果想持续记录某个进程的行为,可以用 pidstat。比如监控 PID 为 1234 的进程每秒的 CPU 使用情况:
pidstat -p 1234 1想知道哪个进程在疯狂写日志导致磁盘爆满?iostat 和 iotop 能帮你定位:
iotop -o这个命令只显示正在做 IO 操作的进程,一运行就能看到是谁在“拼命读写”。
图形化工具更适合长期观察
如果你需要长时间监控多台服务器,命令行就不够用了。这时候可以考虑部署 Prometheus + Grafana 这套组合。
Prometheus 负责采集数据,比如通过 node_exporter 抓取每个进程的资源使用情况;Grafana 则用来画图,你可以做成一个仪表盘,一眼看清哪台机器哪个服务最近异常。
比如某次线上报警,数据库连接数突增,通过 Grafana 图表发现是某个爬虫服务突然启动了几十个实例,每个都在连数据库——没有这种可视化监控,排查起来就得靠猜。
别忘了系统自带的 ps 命令
有时候最简单的工具反而最快见效。比如想看看当前有哪些 java 进程在跑:
ps aux | grep java配合 awk 提取关键字段,可以快速筛选出高内存占用的进程:
ps aux --sort=-%mem | head -5这招在紧急排错时特别管用,几秒钟就能列出内存前五的“大户”。
进程监控不是非要上复杂系统,关键是根据场景选对工具。日常维护用 htop、pidstat 就够了;生产环境建议搭一套可视化方案,问题来了才能快速定位,少背锅。