「快慢笔记」原创 · 阅读约 5 分钟
Linux运维 6 工具速查 + 3 链路反查,看完就能上手,先看山再看树最后看根。
前言:一个我常被问的问题
有人问我:"我服务器慢了,为啥每次我都是瞎敲命令?先看啥后看啥?"
我刚入行那会儿也这样。前辈告诉我一句话,我记到现在——「先看山,再看树,最后看根」
「山」 =系统整体;「树」 =瓶颈类型;「根」 =元凶进程。我会用 3 个真实排查链路串起 6 个工具 + 1 个数据源——不是 6 个工具平铺,而是真出问题时,你该先敲啥后敲啥。
0. 总览(1 张表 + 1 张决策树)
0.1 6 工具速查表(主表)
0.2 「服务器慢」决策树
1. 3 行速记(背下来,够 80% 场景用)
2. 3 条排查链路(6 工具的真实使用顺序)
2.1 链路 A:「服务器慢了」(最常见,先看这条)
这一链路用到的工具:htop → top → ps
2.2 链路 B:「磁盘 IO 高但 CPU 不忙」
真实场景:htop 看 CPU 不忙,但服务响应慢,磁盘灯狂闪。这一链路用到的工具:htop → iostat → lsof → ps
2.3 链路 C:「内存爆了(开始用 swap)」
真实场景:htop 看内存满,swap 红色,系统卡。这一链路用到的工具:htop → vmstat → ps → /proc
3. 6 工具速查(每工具 1 段,查表用)
上面 3 条链路告诉你先敲啥;这一节是字典,用到了再回来看。
3.1 top(老底子,所有机器都有)
3 个最关键字段:
- load average= 1/5/15 分钟平均负载,超过 CPU 核数 = 卡了
%Cpu(s) wa = IO 等待时间,长期超过 10% = 大概率有 IO 瓶颈(业内阈值 5% 严格 / 10% 中等 / 20% 宽松皆有,按自己机器基线调)avail Mem(available)= 真可用内存,≈ free + 可回收的 buff/cache(top 第 4 行 KiB Mem 第 6 字段,注意:free 不含 buff/cache,available 才含)
3 个高频选项:
3.2 htop(topo 升级版,所有字段 + F1-F10 速查)
6 种排序方式(F6 后选):CPU% / MEM% / TIME+ / PID / USER / Command
3 种视图模式(F5 切换):Flat(默认平铺)/ Tree(树状)/ Sorted-by-某字段
await = 平均 I/O 等待(ms),超过 10ms = 有问题
%util = 设备利用率,机械盘接近 100% = 卡(SSD 失效,用 await 看)
3.4 vmstat(虚拟内存 + 上下文切换)
si / so = swap in/out,长期大于 0 = 内存真不够
cs = 上下文切换,超过 10 万/s 通常意味着锁竞争/线程切换过多(8 核机器 > 5 万/s 即应开始关注)
3.5 ps(进程快照,脚本用)
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head
3.6 lsof(查"谁占了这个")
4. 实战反查(5 故障 + 5 实战场景)
上面 3 6 工具速查告诉你每个工具怎么看;这一节告诉你真实出问题时怎么用。
4.1 5 大易错点(写错了 5 年都改不了)
这 5 条是 11 篇 2024-2026 年真实排查文章里最常被搞错的——我整理了一下,每条都贴了"易错现象 + 正确做法"。
4.2 5 故障 × 3 步搞定(故障反查)
🔍 故障 1:CPU 100% 卡死 → 链路 A
📊 故障 2:内存爆了 → 链路 C
⚙️ 故障 3:磁盘 IO 高(CPU 不忙,磁盘灯狂闪) → 链路 B
💀 故障 4:进程僵死(D 状态)
🔒 故障 5:端口被占
4.3 5 实战场景(复制即跑)
场景 1:找最占 CPU 的进程
ps aux --sort=-%cpu | head -10
场景 2:找最占内存的进程
ps aux --sort=-%mem | head -10
场景 3:每秒看 CPU 详情
top -d 1
场景 4:看磁盘 IO 每秒刷
iostat -x 1
场景 5:查端口 80 被谁占
lsof -i:80
5. /proc 文件系统(5 关键文件)
尾声:从「瞎敲」到「先看后敲」
写到这里,我突然想起我刚入行那一年。
那时候,服务器出了问题,我的第一反应是 —— 群里问人。
「老大,服务器卡了,咋办?」 老大回我:「自己查」
我就瞎敲命令 —— top 看一眼、free -m 看一眼、df -h 看一眼。看完之后,问题没定位,反而更慌了。
后来我才发现,运维排查是有套路的 ——
不是 6 个工具平铺,是 3 链路 6 砖:
- 链路 B(磁盘 IO 高) = htop → iostat → lsof → ps
- 链路 C(内存爆) = htop → vmstat → ps → /proc
每条链路先看山(htop),再看树(中间工具),最后看根(ps/lsof)。
这一篇,我把这套东西写给你,希望你能少走 弯路。
📚 系列导航