命令行输入 top -o %MEM

查询结果:

解析:

Linux top -o %MEM 命令完整数据解释

这条命令作用:按内存使用率从高到低排序,一眼看出谁最吃内存。

先给你每一列精准含义,再教你怎么看、怎么排查问题。

一、先看顶部全局概览区

1. 第一行 系统概况

plaintext

top - 10:20:30 up 12天,  2:15,  2 users,  load average: 0.15, 0.20, 0.18
  • 10:20:30:当前系统时间

  • up 12天:服务器开机运行时长

  • 2 users:当前登录用户数

  • load average: 0.15, 0.20, 0.18

    1 分钟、5 分钟、15 分钟 CPU 负载

    单核服务器:负载 <1 正常;多核看核心数,不超核数都正常。

2. 第二行 任务进程

plaintext

Tasks: 130 total,   1 running, 129 sleeping,   0 stopped,   0 zombie
  • total:总进程数

  • running:正在运行的进程

  • sleeping:休眠等待的进程(正常)

  • stopped:暂停进程

  • zombie:僵尸进程,不为 0 就是有问题需要处理

3. 第三行 CPU 总体占用

plaintext

%Cpu(s):  1.2 us,  0.5 sy,  0.0 ni, 98.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
  • us:用户进程 CPU(程序本身占用)

  • sy:系统内核 CPU

  • id空闲 CPU,越大越闲

  • wa:IO 等待,过高说明硬盘 / 磁盘读写瓶颈

  • st:虚拟化偷 CPU,阿里云 / 虚拟机常见,高了说明宿主机抢资源

4. 第四、五行 内存 整体使用

plaintext

MiB Mem :  7856.2 total,  1200.5 free,  4500.3 used,  2155.4 buff/cache
MiB Swap:  8192.0 total,  8192.0 free,     0.0 used.  3000.8 avail Mem
  • total:总物理内存

  • free:完全空闲内存

  • used:程序实际占用内存

  • buff/cache:系统缓存、文件缓存(可回收)

  • avail Mem真正还能分给程序的可用内存(看这个最准)

  • Swap:虚拟内存,used 一旦变大,物理内存不够用了,会卡


二、下面进程列表每一列详细解释(重点)

top -o %MEM 就是按 %MEM 降序排列

表格

字段

含义

PID

进程 ID,杀进程用 kill -9 PID

USER

进程所属用户(root / 普通用户)

PR

系统优先级

NI

友好值,越小优先级越高

VIRT

虚拟内存:进程申请的总虚拟空间(不准,参考意义不大)

RES

实际物理内存:进程真正吃掉的内存 最关键

SHR

共享内存,和其他进程共用的内存

S

进程状态

・R 运行中

・S 休眠

・Z 僵尸

%CPU

该进程 CPU 占用率

%MEM

该进程物理内存占整机总内存百分比

TIME+

进程累计占用 CPU 总时长

COMMAND

进程启动命令 / 程序名


三、关键 3 个重点字段(你只需要盯这 3 个)

  1. RES

    进程真实占用物理内存,看这个才知道谁最耗内存。

  2. %MEM

    占整机内存百分比,排序就是按这个来。

    比如一个进程占 20.0%,说明吃掉五分之一整机内存。

  3. avail Mem

    顶部内存行的可用内存,低于 10% 就要警惕内存爆满、OOM 杀进程。


四、实用操作快捷键(top 界面里直接按)

  • M:按内存排序(和 top -o %MEM 一样)

  • P:按 CPU 排序

  • q:退出 top

  • 1:展开看每一个 CPU 核心占用

  • k:输入 PID 可以直接杀死进程


五、简单排查口诀

  1. avail Mem 剩余少 → 内存不够

  2. 看列表前面 %MEM 很高的进程 → 就是它吃内存

  3. Swap used 不为 0 → 物理内存不足,已经在用虚拟内存,服务器会卡

  4. wa 很高 → 硬盘 IO 瓶颈,不是内存 CPU 问题