#1 楼
如果可以通过ps
命令轻松使用top
,为什么要使用它呢?如果必须使用
ps
,请尝试以下操作:ps aux | sort -nrk 3,3 | head -n 5
如果想要真正不断更新的“顶级”产品,请使用手表
watch "ps aux | sort -nrk 3,3 | head -n 5"
#2 楼
正确的答案是: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
评论
这是正确的答案。谢谢Facundo。我试图向其他人解释您可以使用排序和管道传输,但是ps还内置了排序选项,现在我也看到您也使用它,这很棒。
–路易斯·阿尔瓦拉多(Luis Alvarado)
16年4月7日在16:01
第二个命令似乎更有用...但是第一个命令似乎只是显示bash(x2或头部)。
–野生
17年7月3日在18:19
@Wilf第一个突出显示如何在不使用命令sort的情况下按cpu消耗进行排序,第二个显示如何在不干扰排序的情况下指定列。在解释某事时..最好总是简明扼要并一次解释一件事。
– Facundo Victor
17年7月10日在10:29
#3 楼
根据您的需求,您可能会觉得这更易读: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)
#4 楼
我认为ps
不是您要找的东西。您是否看过top
的输出?如果您具有GNU-Top,请尝试使用其批处理模式吐出按cpu用法排序的进程列表,并使用head / tail来获得前5行(前8个是标头):
top -b -n 1 | head -n 12 | tail -n 5
BSD顶部的行为似乎有所不同,并且没有非交互模式,因此请使用另一个
ps
基础的解决方案。评论
在OS X中,top -o cpu -n 5是实现同一目标的一种方法。有人知道吗?我的上衣与您的上衣不同。
– boehj
2011年5月29日下午4:00
您是拥有不同顶部的人,因此您可以说。我的顶部没有-o和-n设置退出前刷新显示的次数。
–卡莱布
2011年5月29日下午5:28
很公平。今天下午,我将在Linux机器上,看看。我的顶部似乎没有批处理模式,这是非常有限的。必须使用某种方式将top传递给其他命令。我会做一些研究。
– boehj
2011年5月29日下午5:45
我在回答中提到了批处理模式开关,但是实际上不需要顶部,因为它会自动检测到管道的一部分,而不是交互式会话。您是否尝试过不使用它进行管道输送?
–卡莱布
2011年5月29日下午5:56
会做。 GNU top的工作如今天下午所述。干杯。
– boehj
11年5月29日在12:05
#5 楼
我为此找到了最快的一个衬纸(注释6,因为标题加起来了):ps aux k-pcpu | head -6
#6 楼
请注意,基于域代码(在ps手册页中提供),当前的ps版本在其中具有排序功能。处理器使用的域代码为“ c”。您可以在ps命令末尾使用--sort c
,例如ps aux --sort c
这会将使用最大CPU的进程放在列表的底部。通过将减号添加到用于排序(例如)
ps aux --sort -c
#7 楼
为了给其他有价值的答案加分,我更喜欢:ps auxk-c | head -6
它也打印标题,这很好。
这里
k
与--sort
相同,并且c
指定用于排序的CPU使用率(别名%cpu
)字段,而-
用于反向排序。 您可以添加更多用
,
分隔的说明符,其他可能的说明符是:%mem
,args
,bsdstart
,pid
,gid
,uid
...可以在手册页的“标准格式说明”部分中找到完整列表。例如: ps auxk -gid,-%mem | head -11
将打印10个具有最高组ID的进程,并在内部按内存使用情况进行排序。
评论
谢谢。正是我所需要的。
– RedFox
20年6月16日,0:08
#8 楼
命令行工具ps
有其自己的排序选项,因此我更喜欢:$ ps -eo pcpu,args --sort=-%cpu | head
您可以添加所需的列。通过
ps
手册页查看可用的其他选项。$ man ps
#9 楼
这是我想出的东西,因为我发现原始答案有点太不可思议了。因此,对于裸露的骨骼,请输入
ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 6
让我们理解每个做。当然,该图显示了当前进程的快照。
ps
显示了系统上的每个进程-e
定义了我们想要的结果格式,如您所见,我们将格式指定为-o
,当然接下来是pid,cmd,%cpu,%mem
进行排序。这里要注意的重要一点是,默认情况下,它按升序排序。同样,--sort
也需要该参数进行排序,我们由--sort
提供该参数,请注意-%cpu
这是为了使其降序排序,并且我们首先获得了最高的CPU使用率。然后,将其输入到-
中,这将为我们提供 PID CMD %CPU %MEM
5995 transmission-gtk 5.1 1.3
402083 /usr/lib64/firefox/firefox 4.2 6.7
978875 /usr/lib64/firefox/firefox 3.6 4.0
2982 /usr/bin/gnome-shell 2.7 3.0
2774 /usr/libexec/Xorg vt2 -disp 1.9 1.0
现在,我们了解了一些可以炫耀的基本知识。例如,您可以使用
head -n 6
每2秒更新一次列表,例如watch "ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 6"
,或者,对于更喜欢的人,您可以安装一个名为
watch
的python软件包,在其中键入您的终端机tabulate
,现在您可以使用一些pip install tabulate
fu等真正炫耀了。 ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 5 | tabulate -1 -f github | cut -f 2- -d "|" | sed '2s/----/ /'
给出了如此漂亮的输出-
| PID | CMD | %CPU | %MEM |
|--------|----------------------------|--------|--------|
| 5995 | transmission-gtk | 5.1 | 1.3 |
| 978875 | /usr/lib64/firefox/firefox | 4.5 | 4.1 |
| 402083 | /usr/lib64/firefox/firefox | 4.2 | 6.7 |
| 2982 | /usr/bin/gnome-shell | 2.7 | 3 |
为易于使用,避免反复键入此命令,您可以像这样将它们
sed
插入alias
中alias top5="ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 6"
做完
.bashrc
后,您可以键入source .bashrc
。或者,您可以只使用
top5
并按htop
排序htop还可以使您杀死进程等等。 #10 楼
在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
#11 楼
top
将显示正在使用的CPU。如果已安装,则htop
允许您进行更细粒度的控制,包括在您的情况下通过CPU进行过滤。#12 楼
我认为查看前5个cpu消耗过程的最简单方法是ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
要查看前5个cpu消耗过程是
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
其中,
-e
:此标志用于选择所有进程。-o
:此标志用于格式化为用户定义的格式。pid
:此参数用于显示pid comm
:此参数仅用于显示命令名称。要获取完整的命令,请使用args
,cmd
或command
%cpu
:此参数以“ ##。#”格式显示进程的CPU利用率百分比。在这里也可以使用pcpu
。%mem
:此参数显示进程的驻留集大小与计算机上物理内存的比率,以百分比表示。在这里也可以使用pmem
。--sort
:指定排序顺序。在=
之后,-
符号用于在顶部对最大值进行排序,其中默认选项+
用于列出递增的数字顺序[即0到n]。 #13 楼
top -bn1 |sed -n '7,12'p
也是一个不错的小班轮。尽管我更喜欢将ps与--sort = X -o X,Y,Z
使用ps来获取不同的统计数据grep代表一个流程或用户,然后使用管道将其总计或平均到awk。
评论
ps aux |排序-k 3,3 |尾-n 5 ;-)
– PlanasB
11年5月28日在19:01
最好包括数字排序,以跳过ps aux的标题。 ps aux |排序-nrk 3,3 |头-n 5
–syss
16年5月12日在10:42
这产生了许多进程,这些进程更耗资源并且也更容易出现争用情况,因为当管道数据到达头时,进程列表可能已经更改
–phuclv
17年6月12日在9:20
@LưuVĩnhPhúc是正确的,但我想知道这与实际工作方式有何不同。
–冰水
17年6月15日在2:50
@icedwater top读取过程列表并自行显示结果,而无需通过管道传递到任何其他过程
–phuclv
17年6月15日在3:16