Linux Shell - 查找前K个进程数

时间:2013-02-09 20:51:51

标签: linux shell command

我试图弄清楚如何在linux shell中获得前k个进程。显然,首先出现的是top,但它似乎没有任何参数来指定要打印的进程数。

使用批处理模式和迭代次数参数,我可以让它生成所有进程的一次迭代并存储输出,但我找不到将列表缩减到某个数字的方法。 (当然,我可以获取整个列表并将其裁剪掉,但我使用它的系统运行了27000个进程,因此检索列表需要几秒钟。)

示例:

>top -b -n1
>... (lots more processes here)
>26416 mcm101    20   0  4188  176   96 S  0.0  0.0   0:00.00 character_count
>26604 root      20   0  180m 5684 3532 S  0.0  0.0   0:00.54 sshd
>26616 pwf7      20   0  105m 1792 1432 S  0.0  0.0   0:00.10 bash

我想要的是这样的:

>top k
>1 mcm101    20   0  4188  176   96 S  0.0  0.0   0:00.00 character_count
>2 pwf7      20   0  105m 1792 1432 S  0.0  0.0   0:00.10 bash
>... (more processes here)
>k root      20   0  180m 5684 3532 S  0.0  0.0   0:00.54 sshd

有谁知道如何使用top或任何其他命令来实现此结果?

1 个答案:

答案 0 :(得分:2)

这个怎么样:

top -b -n1 | grep '^ *[0-9]' | head -n $k

top将按CPU使用顺序输出所有进程,grep将从输出中选择那些以数字开头的行(即那些以PID开头的行)和head将从该输出中输出第一个k行。