定位linux异常进程需先查cpu、内存、io占用:用top/htop或ps aux排序找高占比进程,pidstat观察波动;free和smem查内存,proc/pid/status确认真实占用;iostat和iotop定位io瓶颈;再用strace、lsof、proc/pid/stack分析行为根因。

Linux 进程异常占用资源时,需快速定位是哪个进程、占什么资源(CPU、内存、IO)、为什么占用,再针对性处理。关键不是“杀进程”,而是“看懂它在干什么”。
看 CPU 占用最高的进程
用 top 或 htop(推荐安装)实时查看:按 P 按 CPU 使用率排序,重点关注 %CPU 列持续 >80% 的进程。注意区分是单核满载还是多核均衡——比如 4 核机器上一个进程占 300%,实际已压满 3 个核。
更精准可执行:
- ps aux --sort=-%cpu | head -n 11:列出 CPU 占用前 10 的进程,含用户、PID、命令全路径
- pidstat -u 1:每秒刷新一次各进程 CPU 使用明细,适合观察波动
查内存疯涨的元凶
内存异常常表现为系统变慢、频繁 swap、OOM Killer 启动(dmesg 可见日志)。先看整体:free -h 看可用内存是否持续逼近 0;再聚焦进程:
程序介绍:程序采用.net 2.0进行开发,全自动应用淘客api,自动采集信息,无需,手工更新,源码完全开放。(程序改进 无需填入阿里妈妈淘客API 您只要修改app_code文件下的config.cs文件中的id为你的淘客id即可)针对淘客3/300毫秒的查询限制,系统采用相应的解决方案,可以解决大部分因此限制带来的问题;程序采用全局异常,避免偶尔没考虑到的异常带来的问题;程序源码全部开放,请使
- ps aux --sort=-%mem | head -n 11:按内存占比排序,注意 RSS(物理内存占用)和 VSZ(虚拟内存大小)的区别
- smem -s rss -r | head -n 10:更准确统计实际物理内存占用(考虑共享内存去重),需安装 smem
- 对可疑 PID,查 cat /proc/
/status | grep -E "VmRSS|VmSize|MMUPageSize" ,确认是否真在吃内存,还是 mmap 大文件未真正加载
揪出卡死磁盘 IO 的进程
系统响应迟缓但 CPU 和内存不高?大概率是 IO 等待(%wa 在 top 中偏高)。用以下方式定位:
- iostat -x 1:观察 %util(设备忙时百分比)和 await(IO 平均等待毫秒),若 %util 接近 100 且 await >100ms,说明磁盘瓶颈
- iotop -o:只显示正在做 IO 的进程,按 IO 速率排序,看清是读(READ)、写(WRITE)还是交换(SWAPIN)
- 对具体进程,cat /proc/
/io 查读写字节数、sysc 调用次数,判断是否频繁小 IO 或大块顺序写
深入分析进程行为(不重启、不中断)
找到问题进程后,别急着 kill,先采集上下文:
-
strace -p
-e trace=write,read,open,close -s 128 :抓其系统调用,看在读写哪些文件、是否死循环 open/close -
lsof -p
:列出打开的所有文件、socket、管道,检查是否有大量句柄未释放(如日志轮转失败、连接泄漏) -
cat /proc/
/stack :查看内核态调用栈(需 root),判断是否卡在某个系统调用(如 uninterruptible sleep 状态 D 状态) - 结合 journalctl -u
--since "1 hour ago" 或应用自身日志,交叉验证行为是否符合预期
排查不是一锤子买卖。同一进程反复异常,往往暴露配置错误、代码缺陷或资源限制不合理。记录下每次的 pidstat/iostat/strace 输出,对比变化,才能从“救火”走向“防火”。









