![如何找到哪些进程占用了所有内存?](https://linux22.com/image/42720/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E5%93%AA%E4%BA%9B%E8%BF%9B%E7%A8%8B%E5%8D%A0%E7%94%A8%E4%BA%86%E6%89%80%E6%9C%89%E5%86%85%E5%AD%98%EF%BC%9F.png)
我正在寻找诸如 top 之类的东西来了解 CPU 使用情况。 top 是否有一个命令行参数可以做到这一点?目前,我的内存已经满了,甚至“man top”也会因内存不足而失败:)
答案1
从内部top
您可以尝试以下操作:
- 按SHIFT+f
- 按%MEM对应的字母
- 按ENTER
您也可以尝试:
$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5
这将给出内存使用量排名前 5 的进程。
答案2
如果您安装了它,我喜欢htop
启动它后,您可以按f6, down arrow(to MEM%
)enter按内存排序。
答案3
在 Solaris 中,您需要的命令是:
prstat -a -s size
这将按进程映像大小降序列出所有进程。请注意,后者基于操作系统提交给进程的内存,而不是其驻留物理内存使用情况。
据说有适用于 Solaris 的“top”版本,但这些不是标准安装的一部分。
答案4
此命令将识别内存消耗最多的进程:
ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"