如何在Linux系统上查看按实际内存使用量排序的顶部进程?


Linux 提供了著名的 **top** 命令实用程序,它可以提供有关进程、其运行时间、各自的 ID、它们消耗的 CPU 资源等等信息。唯一的问题是进程没有按照任何顺序排序,并且顺序会频繁变化。

在某些情况下,我们希望输出以某种排序方式显示,例如按内存使用量排序,内存使用量最高的进程排在最前面。

最基本的方法是使用 Linux 提供的 **ps** 命令,并附加类似的命令,主要是 **--sort** 标签和 **mem** 命令。

在使用 **ps** 命令打印内存消耗最大的进程之前,让我们先了解一下它。

第一个命令是 Linux 操作系统的 **ps** 命令。**ps** 命令是“进程状态”的缩写,用于列出当前在 Linux 机器上运行的进程,以及它们的 PID 和其他选项。

语法

ps ef | [ - options ]

让我们举两个例子,第一个例子将打印在你的 Ubuntu 机器上运行的所有进程,第二个例子将打印特定服务是否正在运行。

命令

ps ef

输出

UID PID PPID C  STIME  TTY    TIME        CMD
 0   1   0   0  25Jun21 ??  19:53.44  /sbin/launchd
 0  56   1   0  25Jun21 ??   0:41.68  /usr/sbin/syslogd
 0  57   1   0  25Jun21 ??   0:59.28  /usr/libexec/UserEventAgent (System)

上述命令的输出非常庞大,所以我只打印了一部分,需要注意的是输出可能会有所不同。

现在我们对 **ps** 命令有了一些了解,让我们看看将给我们所需输出的命令。

命令

ps aux --sort ‘%mem’

输出

USER     PID %CPU %MEM   VSZ     RSS  TTY
...
root    1284 1.5  3.7  452692  142796 tty7
immukul 2286 0.3  3.8 1316000  143312 ?
immukul 5150 0.0  4.4  660620  168488 pts/0
immukul 5147 0.0  4.5  660556  170920 pts/0
immukul 5142 0.1  6.3 2581944  239408 pts/0
immukul 2386 3.6 16.0 1752740  605372 ?

正如我们在上面的输出中看到的,进程按它们消耗的内存从小到大排序。

另一种选择是使用 **top** 命令本身,并按照以下步骤操作

在你的终端中键入 **top** 后,按 **SHIFT + M**,然后在交互式菜单中按进程内存排序。最后,运行以下命令

top -o +%mem

输出

USER     PID %CPU %MEM  VSZ    RSS   TTY
...
root    1284 1.5  3.7 452692  142796 tty7
immukul 2286 0.3  3.8 1316000 143312 ?
immukul 5150 0.0  4.4 660620  168488 pts/0
immukul 5147 0.0  4.5 660556  170920 pts/0
immukul 5142 0.1  6.3 2581944 239408 pts/0
immukul 2386 3.6 16.0 1752740 605372 ?

更新于:2021年7月30日

360 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.