如何在 Linux 上查看按实际内存使用情况排序的顶级进程?
Linux提供了著名的top命令实用程序,它为我们提供了有关进程、它们的时间、它们各自的ID、它们消耗了多少CPU块等等的所有信息。唯一的问题是进程没有按任何顺序排序,并且顺序经常变化。
在某些情况下,我们希望以某种方式对输出进行排序,例如在使用最多内存的进程将位于顶部的意义上进行排序。
最基本的方法是利用Linux提供的ps命令并附加类似的命令,主要是--sort标签和mem命令。
在使用ps命令打印消耗最多内存的进程之前,让我们先了解一下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,然后在交互式菜单中对每个进程的MEM进行排序。最后,运行如下所示的命令
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 ?