在 Linux 系统中,查看内存占用并按使用率排序是常规操作。下面我将介绍几种常用的命令和方法,并用表格汇总关键指标,助你快速定位“内存大户”。
📊 一、常用命令与操作
这里用一个表格快速了解各命令的特点和适用场景:
命令/工具 | 推荐用法 | 特点 | 排序操作 (内存) |
---|---|---|---|
top | top | 系统自带,交互式实时监控 | Shift + M |
htop | htop (需安装) | 更友好的交互式界面,支持鼠标操作 | F6 然后选择 MEM% |
ps | ps aux --sort=-%mem \| head -n 10 | 生成静态快照,适合获取某一时刻的排名 | 通过 --sort=-%mem 参数 |
smem | smem -s rss -r | 能显示物理内存(RSS)和Swap使用情况,输出更直观 | 通过 -s 指定排序字段 |
glances | glances (需安装) | 综合系统监控工具,功能丰富 | 界面中按 m |
1. 使用 top
命令
top
命令能实时显示系统进程的资源占用情况。
- 在终端输入
top
回车。 - 进入界面后,按下
Shift
+M
即可按内存使用率(%MEM)降序排列。 - 若要按 RES 排序,也是按
Shift
+M
。 - 按
q
退出。
在 top
界面,你可以按 E
(大写)循环切换顶部信息区的内存单位(KiB、MiB、GiB),这有助于更直观地阅读数字。
2. 使用 htop
命令
htop
是 top
的增强版,提供了彩色高亮、水平滚动等更友好的界面。
- 若系统未安装,可通过命令安装:
- Ubuntu/Debian:
sudo apt install htop
- CentOS/RHEL:
sudo yum install htop
- Ubuntu/Debian:
- 输入
htop
回车启动。 - 进入界面后,按
F6
打开排序菜单,用箭头键选择MEM%
然后回车,即可按内存使用率排序。 - 按
F10
或q
退出。
3. 使用 ps
命令
ps
命令提供当前进程的快照,适合获取特定时刻的信息。
- 按内存使用率排序:
ps aux --sort=-%mem | head -n 10
--sort=-%mem
表示按内存使用率降序排列,head -n 10
则限制只显示前 10 个进程。 - 按实际内存大小(RSS)排序:
ps aux --sort=-rss | head -n 10
4. 其他工具
-
smem
命令:可以提供更详细的内存使用报告,例如smem -s rss -r
会按 RSS 降序显示。 -
glances
:一个综合的系统监控工具,安装后运行glances
,在界面中按m
可查看内存情况。
🔍 二、理解内存指标的含义
查看内存时,常会遇到这些指标,了解它们能帮你更准确地判断:
指标 | 全称 | 含义 |
---|---|---|
VIRT | Virtual Memory Size | 进程可访问的总虚拟内存大小,包括进程代码、数据、共享库及可能被换出的部分。 |
RES | Resident Memory Size | 进程当前使用的、未被换出的物理内存大小(单位通常是 KB)。 |
SHR | Shared Memory Size | 进程使用的共享内存大小,如共享库等,其他进程也可能在使用。 |
%MEM | Memory Usage Percentage | 进程使用的物理内存(RES) 占系统总物理内存的百分比。 |
简单理解:RES 是进程“实实在在”占用的物理内存,这是我们关注的重点。%MEM 是 RES 的占比,是排序的常用依据。VIRT 可能很大,但不一定都占用物理资源。
📌 三、查看交换空间(Swap)使用情况
若系统使用了 Swap 空间,你可能还想知道哪些进程占用了 Swap:
- 使用
smem
命令:smem -s swap -r
可以按 Swap 使用量降序显示进程。 - 查看
/proc/
文件系统:对于特定进程 ID(PID),可以通过grep VmSwap /proc/[pid]/status
查看其 Swap 使用情况。 - 在
top
中启用 SWAP 字段:在top
界面按f
,用箭头键找到SWAP
项并按空格
启用,然后回车即可在显示中看到。
💎 总结
掌握查看内存占用排序的方法是Linux系统管理和性能排查的基础技能。
- 快速交互式查看:用
top
(Shift+M
)或htop
(F6
选MEM%
)。 - 获取静态快照:用
ps aux --sort=-%mem \| head -n 10
。 - 理解关键指标:重点关注 RES 和 %MEM。
- 深究Swap使用:借助
smem
或/proc/[pid]/status
。