Answers:
ps
当您可以通过top
命令轻松完成操作时,为什么要使用它?
如果必须使用ps
,请尝试以下操作:
ps aux | sort -nrk 3,3 | head -n 5
如果您想要不断更新的真正“顶级”产品,请使用watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
实际工作方式有何不同。
top
读取过程列表并自行显示结果,而无需通过管道传递给其他过程
正确答案是:
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
bash
(x2或head
同样)ps
...
sort
,第二个用于显示如何在不干扰排序的情况下指定列。在解释某事时..最好总是每次简明扼要地解释一件事。
根据您的需求,您可能会觉得这更具可读性:
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)
我不认为这ps
是您想要的。你看过输出了top
吗?
如果您有GNU-Top,请尝试使用其批处理模式吐出按cpu用法排序的进程列表,并使用head / tail来获得前5行(前8行是标头):
top -b -n 1 | head -n 12 | tail -n 5
BSD顶部的行为似乎有所不同,并且没有非交互模式,因此请使用其他ps
基于解决方案的解决方案之一。
top -o cpu -n 5
实现同一目标的一种方法。有人知道吗?我top
和你不一样top
。
-o
并-n
设置了退出前刷新显示的次数。
top
似乎没有批处理模式,这是非常有限的。必须有某种方式传递top
给其他命令。我会做一些研究。
top
今天下午描述了工作。干杯。
我为此找到了最快的一个班轮(注意6,因为标题加起来了):
ps aux k-pcpu | head -6
命令行工具ps
有其自己的排序选项,因此我更喜欢:
$ ps -eo pcpu,args --sort=-%cpu | head
您可以添加所需的列。通过ps
手册页查看其他可用选项。
$ man ps
top
在Mac OS X上,其日志记录模式选项的形式为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
我认为查看前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
:此参数仅用于显示命令名称。要获取完整的命令,请使用args
,cmd
或command
%cpu
:此参数以“ ##。#”格式显示进程的cpu利用率百分比。pcpu
也可以在这里使用。
%mem
:此参数显示进程的驻留集大小与计算机上物理内存的比率,以百分比表示。pmem
也可以在这里使用。
--sort
:指定排序顺序。在=
使用-
符号对顶部的最高值进行排序之后,默认选项+
是列出递增的数字顺序(即0到n)。