如何找到哪些进程占用了所有内存?

rip*_*234 106 process memory top

我正在寻找像 top 之类的东西对 CPU 使用率。是否有用于执行此操作的 top 命令行参数?目前,我的记忆太满了,即使是 'man top' 也因内存不足而失败:)

Ste*_*n D 132

top您可以从内部尝试以下操作:

  • SHIFT+f
  • 按 %MEM 对应的字母
  • ENTER

您也可以尝试:

$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5
Run Code Online (Sandbox Code Playgroud)

这将按内存使用情况给出前 5 个进程。

  • 在 Linux 下,只需按“M”即可按物理内存使用情况(RES 列)进行排序。在 *BSD 下,运行 `top -o res` 或 `top -o size`。但是 [htop](http://unix.stackexchange.com/questions/4999/how-to-find-which-processes-are-taking-all-the-memory/5004#5004) 好多了,而且没有甚至比 top 消耗更多的内存(但是它不是基本工具集的一部分,因此您可能没有安装它)。 (19认同)
  • 我不得不按 `s` 以按 `%MEM` 排序,然后点击退出顶部。 (2认同)

xen*_*ide 12

如果你安装了它,我喜欢htop 一旦启动它,你可以按f6, down arrow(to MEM%),enter按内存排序。


小智 8

在 Solaris 中,您需要的命令是:

prstat -a -s size
Run Code Online (Sandbox Code Playgroud)

这将按照进程映像大小的降序列出所有进程。请注意,后者基于操作系统提交给进程的内存,而不是其常驻物理内存使用情况。

据说有一些适用于 Solaris 的“top”版本,但这些不是标准安装的一部分。


Mic*_*zek 7

一旦top开始,按F切换到排序字段屏幕。按左侧列出的键选择列出的字段之一;你可能想NMEM%

  • 如果你想要 MEM%,按 'M' 与上述相同。'c' 将命令行参数添加到进程列表中,可能有助于解决您的问题。 (2认同)

小智 6

此命令将识别内存消耗最高的进程:

ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"
Run Code Online (Sandbox Code Playgroud)


小智 5

一个不错的替代方案tophtop. 检查它,它比普通的顶部更加用户友好。