一次线上排查里,top 抓到一个进程在不到一秒的时间里,CPU 占用从 10% 一下窜到 90%。

那一瞬间很直白地把问题摆在眼前:用 ps、free、df 这种看“某一刻”的命令,根本发现不了这种短平快的突发。打个比方,你用手机截个图去看路上车有多少,但那图里可能刚好没车,下一秒就堵成麻花了。运维里也是这样,静态快照容易漏掉短时间的猛峰,所以不少人平时就把实时监控界面开着,万一哪儿来个“瞬间疯跑”的进程,一眼就能看出来。
说到实时查看,Linux 下最常见的就是 top。大部分发行版都有它,像 Ubuntu、Debian、CentOS 都能敲 top 直接用。默认刷新是每 3 秒一次(可以改刷新间隔),界面分两块:上面一堆系统总体信息,下面一长列进程。它好用的点是交互性强,切换排序、筛选、刷新都不用退出界面,操作起来比较顺手。

看 top 屏幕,第一行一般给出负载等总体指标。把负载和 CPU 核心数放一起看就清楚:机器四核,负载小于 4,说明还有空闲;超过 4 就进了高负载区,像 8 的话基本上表明 CPU 被撑满了。别把负载当成百分比,它反映的是运行队列的长度,这个差别挺重大的。第二行会告知你进程总数、运行和睡眠的数量;第三行展示的是 CPU 使用的分布,各项加起来大致是 100%。下面几行是内存、swap 的信息,单位一般是 MiB(1 MiB = 1024 KiB)。看 Mem 那行能快速判断是不是内存紧张,Swap 行能看出有没有频繁换页。
进程列表默认按 CPU 占比降序排列。每一行代表一个进程,关键列实则没那么复杂,下面用大白话把它们说清楚:

– PID:就是进程号,有这个才能定位和下命令结束它。
– USER:哪个用户在跑这个进程,用来分辨系统进程还是某个用户的任务。
– PR:优先级标识,数字越小代表优先级越高,系统会动态调整。
– NI:nice 值,范围一般是 -20 到 19,数值越小优先级越高,人可以用 nice/renice 调。
– VIRT:虚拟内存大小,它把程序能访问的地址空间都算进去,别光看这个就慌。
– RES:常驻集大小,表明实际占了多少物理内存,比 VIRT 更靠谱地反映内存占用。
– SHR:共享内存部分,列如共享库,和别的进程共用的那块。
– S:进程状态,R 是运行,S 是睡眠,D 一般和 IO 有关的不可中断睡眠,Z 是僵尸,T 是被停止或跟踪。
– %CPU:在当前刷新周期里占了多少 CPU;一句话理解,100% 大体等于占满一个核心。
– %MEM:占物理内存的比例,举个直观感受:机器有 16GB,5% 大致就是 800MB。
– TIME+:进程从启动到目前累积消耗的 CPU 时间,不是瞬时,是累积数。
– COMMAND:该进程是怎么启动的,靠它能辨认进程用途。
top 不只是看表这么简单,界面里有一堆快捷键可以用来改变排序、筛选和直接对进程操作。默认按 %CPU 排,你想按内存排就能换,或者按名字过滤目标进程,碰到几百个进程时这功能特别好用。要结束某个进程,记下 PID,另开一个终端 kill 掉;也可以在 top 里直接下命令处理。需要调优优先级时,nice 和 renice 是常用工具。
除交互方式外,top 支持在启动时带参数预设显示规则,也可以把输出重定向到文件,用脚本定期收集,方便事后分析。举例来说,有人会用 top 的批处理模式把一段时间内的快照存下来,出了问题回头翻就比盯日志更直观。
htop 是给 top 换了个更好看的外衣,支持彩色显示、鼠标操作、进程树视图,能更清楚地把父子进程关系展示出来。不过 htop 并不是各发行版都自带,需要装一下。装好后交互更直观、筛查更方便,个人用起来体验更顺手,尤其是要看进程树或者点选操作时。
回到那次线上排查的场景:由于有实时界面盯着,才看见那个不到一秒就蹿起来的峰值,然后一步步定位。常见的做法是记下当时占用飙升的 PID,检查它对应的 COMMAND,看 RES、VIRT,观察进程状态是 R 还是 D,再结合系统的内存和 IO 信息判断。像是内存泄露、临时的计算任务或者外部脚本突然被触发,这些情况都可能导致瞬时冲上去。临场处置往往是先让进程“降火”——调整 nice、限制优先级,必要时 kill 掉;随后把进程的日志、启动脚本、crontab 等逐一排查,找根因。
给大家几个实用的小习惯:平时把 top 或 htop 放一屏,遇到异常先盯着变化,不要只靠事后截图;遇到频发的短时峰值,把 top 的刷新间隔调短一点,或者用批处理模式抓几分钟的历史;看到进程长期在 D 状态,多半跟磁盘或网络 IO 有关系,别急着 kill,先看 IO 情况。实战中你会发现,比起记一堆静态命令,熟练用好实时工具在救火时更实在。
就这么个感觉:平时养成盯着看、会用交互功能的习惯,等到机器炸毛的时候,能立刻看见那一瞬间的变化,比事后翻日志或者看单点快照靠谱得多。




收藏了,感谢分享