使用“ps”显示前五个 CPU 消耗进程

Pla*_*asB 132 linux ps

如何使用 ps 显示前五个 CPU 消耗进程?

Bob*_* P. 136

ps当您可以使用top命令轻松完成时,为什么要使用?

如果你必须使用ps,试试这个:

ps aux | sort -nrk 3,3 | head -n 5
Run Code Online (Sandbox Code Playgroud)

如果你想要一些真正“顶级”且不断更新的东西,请使用 watch

watch "ps aux | sort -nrk 3,3 | head -n 5"
Run Code Online (Sandbox Code Playgroud)

  • ps辅助| 排序 -k 3,3 | 尾-n 5 ;-) (3认同)
  • 最好包含数字排序,以跳过 ps aux 的标题。`ps辅助| 排序-nrk 3,3 | 头-n 5` (2认同)
  • @icedwater `top` 读取进程列表并自行显示结果,无需管道到任何其他进程 (2认同)

Fac*_*tor 118

正确答案是

ps --sort=-pcpu | head -n 6
Run Code Online (Sandbox Code Playgroud)

因此,您可以在不干扰排序的情况下指定列。

前任:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
Run Code Online (Sandbox Code Playgroud)

MAC OS X 的注意事项:在 Mac OS X 中,ps不识别--sort,但提供-r按当前 CPU 使用情况排序。因此,对于 Mac OS X,您可以使用:

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
Run Code Online (Sandbox Code Playgroud)

  • 这是正确答案。谢谢法昆多。我试图向其他人解释你可以使用 sort 和 pipe 它,但是 ps 也内置了一个排序选项,现在我看到你也使用它,这很棒。 (4认同)
  • @Wilf 第一个是突出显示如何在不使用命令 `sort` 的情况下按 CPU 消耗进行排序,第二个显示如何在不干扰排序的情况下指定列。在解释某事时.. 简洁一点,一次解释一件事总是更好。 (3认同)

Rya*_*ger 30

根据您的需要,您可能会发现这更具可读性:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
Run Code Online (Sandbox Code Playgroud)

示例输出:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond
Run Code Online (Sandbox Code Playgroud)

(字段为 %CPU、PID、USER、COMMAND)


Cal*_*leb 27

我不认为这ps是你要找的。你看过输出top吗?

如果您有 GNU-Top,请尝试使用它的批处理模式吐出按 cpu 使用情况排序的进程列表,并使用 head/tail 获取前 5 行(前 8 行是标题):

top -b -n 1 | head -n 12  | tail -n 5
Run Code Online (Sandbox Code Playgroud)

BSD 顶部的行为似乎有所不同,并且没有非交互模式,因此请使用其他ps基于解决方案之一。


小智 9

我为此找到的最快的一个班轮(注 6,因为标题加起来):

ps aux k-pcpu | head -6
Run Code Online (Sandbox Code Playgroud)


2i3*_*i3r 7

为了给其他有价值的答案添加一点,我更喜欢:

ps auxk-c | head -6
Run Code Online (Sandbox Code Playgroud)

它还打印标题,这很好。

这里k与排序相同--sortc指定 CPU 使用率(别名%cpu)字段,而-用于反向排序。

您可以添加更多由 分隔的说明符,,其他可能的说明符是 : %mem, args, bsdstart, pid, gid, uid... 您可以在手册页的STANDARD FORMAT SPECIFIERS部分找到完整列表 。例如:

 ps auxk -gid,-%mem | head -11
Run Code Online (Sandbox Code Playgroud)

将打印具有最高组 ID 的 10 个进程,内部按内存使用情况排序。


小智 5

请注意,当前版本的 ps 具有基于字段代码(在 ps 手册页中给出)的排序能力。处理器使用的域代码是“c”。您可以--sort c在 ps 命令的末尾使用,例如ps aux --sort c

这会将使用最多 cpu 的进程放在列表底部。通过向用于排序的域代码添加减号来反转列表的顺序,例如ps aux --sort -c