【问题标题】:Linux Shell - Find Top k Number Of ProcessesLinux Shell - 查找前 k 个进程
【发布时间】:2013-02-09 20:51:51
【问题描述】:

我试图弄清楚如何在 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 或任何其他命令来实现此结果?

【问题讨论】:

  • 你如何对k 进程进行排名?
  • 通过 top 命令的 %CPU 字段(我相信这是默认值)。

标签: linux shell command


【解决方案1】:

这个怎么样:

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

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

【讨论】:

  • 完美!我知道这很简单,但我对 linux 命令比较陌生,所以看起来很困难! :D
猜你喜欢
  • 2020-12-07
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多