it-swarm.cn

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

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

115
PlanasB

当您可以通过ps命令轻松使用top时,为什么要使用它?

如果必须使用ps,请尝试以下操作:

ps aux | sort -nrk 3,3 | head -n 5

如果您想要不断更新的真正“顶级”产品,请使用watch

watch "ps aux | sort -nrk 3,3 | head -n 5"
112
Boban P.

正确答案是

ps --sort=-pcpu | head -n 6

因此,您可以指定列而不干扰排序。

例如:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

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
94
Facundo Victor

根据您的需求,您可能会觉得这更具可读性:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

样本输出:

 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

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

28
Ryan Horrisberger

我认为ps不是您想要的。您是否看过top的输出?

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

top -b -n 1 | head -n 12  | tail -n 5

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

24
Caleb

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

ps aux k-pcpu | head -6
6
Nestor Urquiza

请注意,根据域代码(在ps手册页中提供),当前版本的ps在其中具有排序功能。处理器使用的域代码为“ c”。您可以在ps命令的末尾使用--sort c,例如ps aux --sort c

这会将使用最高CPU的进程放在列表的底部。通过将减号添加到用于排序(例如) ps aux --sort -c

5
Cian D

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

ps auxk-c | head -6

它还打印标题,这是尼斯。

k--sort相同,并且c指定用于排序的CPU使用率(别名%cpu)字段,而-用于反向排序。

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

 ps auxk -gid,-%mem | head -11

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

4
2i3r

命令行工具ps有其自己的排序选项,因此我更喜欢:

$ ps -eo pcpu,args --sort=-%cpu | head

您可以添加所需的列。通过ps手册页查看其他可用选项。

$ man ps
3
Christopher James Morton

我认为最简单的方法前5个CPU消耗过程是,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

要看到前5个内存消耗过程是,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

哪里,

-e:此标志用于选择所有进程

-o:此标志用于格式化为用户定义的格式。

pid:此参数用于显示pid

comm:此参数仅用于显示命令名称。要获取完整的命令,请使用argscmdcommand

%cpu:此参数以“ ##。#”格式显示进程的CPU使用率百分比。这里也可以使用pcpu

%mem:此参数显示进程的驻留集大小与计算机上物理内存的比率,以百分比表示。这里也可以使用pmem

--sort:指定排序顺序。在=之后,使用-符号在顶部对最高值进行排序,其中默认选项+将列出递增的数字顺序[即0到n]。

0
muhammad

在Mac OS X上,top具有top -l numberOfSamples形式的日志记录模式选项(这似乎与GNU top )。但是,至少要有两个样本,因为“显示的第一个样本将为每个进程显示一个无效的%CPU,因为它是使用样本之间的差异计算得出的”(man 1 top)。

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
0
ulf

top将显示正在使用的CPU。如果已安装,则htop允许您进行更细粒度的控制,包括通过CPU(在您的情况下)进行过滤。

0
PSN