进程与资源查看:用 top / htop / ps 定位高负载
服务器变慢、卡顿?学会看 CPU、内存和负载,找出偷跑资源的进程并妥善结束它。
当你的服务器突然变慢、网站打不开,第一步不是重启,而是登录进去看看到底谁在占用资源。本文带你用几个基础命令快速定位问题。
用 top 看实时负载
top 是每台 Linux 都自带的实时监控工具,直接运行即可:
top
顶部几个关键字段要读懂:
- load average:1、5、15 分钟的平均负载。经验法则是拿它跟 CPU 核心数比——4 核机器 load 长期高于 4,说明系统在排队,负载偏高。
- %Cpu(s):us 是用户程序占用,sy 是内核占用,id 是空闲。id 接近 0 就是 CPU 跑满了。
- KiB Mem / KiB Swap:内存和交换分区使用情况。Swap 被大量使用通常意味着物理内存不够。
进程列表里按 %CPU 或 %MEM 排序最实用。在 top 界面按 P 按 CPU 排序、按 M 按内存排序,按 q 退出。排在最上面的往往就是元凶。
htop:更直观的替代品
htop 界面更友好,有颜色条和鼠标操作,但通常需要先安装:
sudo apt update
sudo apt install htop
htop
它顶部用彩色条显示每个核心的占用,可以用方向键选中进程,按 F9 直接结束、F6 切换排序、F10 退出。新手推荐优先用它。
用 ps 精确查找进程
top 适合实时观察,而 ps 适合抓取某一刻的快照或配合筛选:
ps aux --sort=-%cpu | head # 按 CPU 占用倒序,看前几名
ps aux | grep nginx # 按名字找特定进程
输出里第二列 PID 就是进程编号,后面结束进程要用到。
结束失控进程
拿到 PID 后,先尝试温和地终止(让程序自己清理退出):
kill 1234
如果进程卡死、kill 无效,再用强制信号:
kill -9 1234
kill -9 会立即杀死进程,可能丢失未保存的数据,属于最后手段,别一上来就用。
单独看内存
想快速确认内存够不够,用 free:
free -h
-h 让数值以 GB/MB 显示。重点看 available 那一列——它才是真正还能用的内存;used 高但 available 充足其实无妨,Linux 会把空闲内存拿去做缓存。
怎样快速定位
- CPU 跑满:top 里 id 接近 0,按 P 排序,揪出 %CPU 最高的进程。
- 内存吃满:free -h 看 available 很低、Swap 涨,再用 top 按 M 找 %MEM 最高的进程。
小结
排查高负载的顺手流程是:top 或 htop 看全局和负载 → 定位占用最高的进程记下 PID → free -h 确认内存 → 用 kill 温和结束,不行再 kill -9。先看清楚再动手,比盲目重启靠谱得多。