商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看具体的内存使用排行

Linux怎么查看具体的内存使用排行

  发布于2026-08-22 阅读(0)

扫一扫,手机访问

使用“ps aux --sort=-%mem | head -n 10”命令,可直接输出内存占用最高的前10个进程,并按照%MEM字段进行降序排列。此命令不依赖交互,也无需安装额外工具。%MEM指的是进程RSS占系统MemTotal的百分比,当精度有限时,建议使用“--sort=-rss”参数。

Linux怎么查看具体的内存使用排行

直接看 ps aux --sort=-%mem | head -n 10 就能拿到当前内存占用最高的前 10 个进程,这是最轻量、最通用、无需额外安装的方案。

ps aux --sort=-%mem 是怎么排序的

ps aux 会默认展示所有用户的全部进程,包括详细的字段信息。--sort=-%mem 这部分的作用是依据 %mem 字段进行降序排列(其中 - 代表降序,而 +%mem 则是升序)。head -n 10 是用来截取前10行的内容。这种组合方式不依赖交互操作,也不会自动刷新,并且其结果可以通过管道进行后续的处理。

  • %mem 是进程占用物理内存占系统总内存的百分比,计算基于 rssMemTotal,不是虚拟内存(virt)或共享内存(shr
  • 如果想按实际物理内存大小(KB)排序,用 --sort=-rss 更准,尤其当进程数量多、内存总量大时,%mem 可能因精度丢失漏掉中等但绝对值高的进程
  • 注意:同一进程的多个线程会单独计为不同 PIDps 默认不合并线程内存,如需按进程名聚合,得用 smem 或脚本后处理

top 按内存排序的实操要点

运行 top 后按 Shift+M(大写 M)即可按 %MEM 降序,但很多人卡在细节上:

  • 默认界面只显示部分列,%MEM 不一定在视野里 —— 按 f 进入字段管理,用方向键选中 %MEM,按空格启用它,再按 q 返回
  • M 一次是降序,再按一次切换为升序,容易误判 —— 看顶部状态栏是否显示 Mem: sort by %MEM (desc)
  • topRES(即 rss)单位是 KB,但显示时自动缩放(K/M/G),而 %MEM 是实时计算值,受 MemA vailable 影响小,更稳定
  • 退出别用 Ctrl+C,会残留前台进程 —— 务必按 q

htop 为什么更直观但要注意兼容性

htop 界面友好,但不是所有系统预装,且排序逻辑和 top 不同:

  • 安装后首次运行,默认按 CPU 排序,要按内存需先按 F6,再用方向键选 MEM%,回车确认 —— 不是 M
  • htop 默认开启“树状视图”,父子进程折叠显示,可能掩盖真实内存大户;按 F5 切换平铺模式更利于横向对比
  • 某些旧版 htop(如 CentOS 7 默认源中的 2.0.2)不支持 --sort 命令行参数,只能交互操作;新版(≥3.0)才支持 htop --sort-key MEM% --no-color 直出文本
  • 颜色高亮靠终端支持,SSH 连接时若字符乱码,加 --no-color 参数可规避

别忽略 /proc/meminfo 里的可用内存含义

查排行只是第一步,判断“是否真缺内存”得看 /proc/meminfo 里的 MemA vailable

  • free -h 输出的 a vailable 字段就来自这里,它 ≠ free + buff/cache,而是内核估算的、可立即分配给新进程的内存量
  • 如果 MemA vailable 远低于总内存 10%,即使 %mem 排行里没看到异常进程,也可能存在大量匿名页或 slab 缓存未回收
  • 此时 pstop 看到的高 %mem 进程未必是元凶 —— 得结合 cat /proc/meminfo | grep -E "^(Mem|SReclaimable|Slab)" 看 slab 占用

真正难的是区分“单个进程吃内存”和“内核缓存吃内存”,ps 排行只解决前者;后者需要交叉验证 /proc/meminfoslabtop,否则容易误杀服务进程。

本文转载于:https://www.php.cn/faq/3025857.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐