如何抑制top命令的一般信息

时间:2016-05-03 04:00:56

标签: bash top-command

我希望取消top命令的一般信息 使用top parameter

根据一般信息,我的意思是以下内容:

top - 09:35:05 up  3:26,  2 users,  load average: 0.29, 0.22, 0.21
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.3%us,  0.7%sy,  0.0%ni, 96.3%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3840932k total,  2687880k used,  1153052k free,    88380k buffers
Swap:  3998716k total,        0k used,  3998716k free,   987076k cached

希望做的是:

top -u user | grep process_name

top -bp $(pgrep process_name) | do_something

我怎样才能做到这一点?

注意:我使用的是Ubuntu 12.04,顶级版本是3.2.8。

7 个答案:

答案 0 :(得分:3)

它被称为“摘要区域”,我认为top初始化没有办法禁用它们。

但是当top正在运行时,您可以通过按 l t m 来禁用它们。

来自man top

 Summary-Area-defaults
  'l' - Load Avg/Uptime  On  (thus program name)
  't' - Task/Cpu states  On  (1+1 lines, see '1')
  'm' - Mem/Swap usage   On  (2 lines worth)
  '1' - Single Cpu       On  (thus 1 line if smp)

答案 1 :(得分:3)

今天遇到了这个问题。我有一个潜在的解决方案 - 当禁用摘要区域时,从顶部的交互模式创建一个顶级配置文件。由于在批处理模式下也会在启动时读取此文件,因此也会导致在批处理模式下禁用摘要区域。

按照以下步骤进行设置..

  1. 以互动模式启动顶部。

  2. 进入交互模式后,依次按“' l”,' m'停用摘要区域。和'

  3. 按' W' (大写)来编写你的顶级配置文件(通常是〜/ .toprc)

  4. 退出互动模式。

  5. 现在,当您以批处理模式运行顶部时,摘要区域将不会显示(!)

    更进一步......

    如果您在某些情况下只想要这个,并且大多数时候仍然想要摘要区域,则可以使用备用顶级配置文件。但是,AFAIK,使用备用配置文件的方式有点时髦。有几种方法可以做到这一点。我使用的方法如下:

    1. 创建顶级可执行文件的软链接。只要您对链接的位置具有写入权限,就不必以root身份完成...

      ln -s /usr/bin/top /home/myusername/bin/omgwtf
      
    2. 通过输入链接的名称(' omgwtf')而不是' top'来启动顶部。您将处于正常的顶级交互模式,但是当您保存配置文件时,它将写入〜/ .omgwtfrc,只留下〜/ .toprc。

    3. 禁用摘要区域并像以前一样编写配置文件(按' l',' m',' t'和&#39 ; W&#39)

    4. 将来,当您准备在批处理模式下运行top而没有摘要信息时,您必须通过您创建的链接名称调用top。例如,

      % omgwtf -usyslog -bn1
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
      576 syslog    20   0  264496   8144   1352 S   0.0  0.1   0:03.66 rsyslogd
      %
      

答案 2 :(得分:2)

如果您以批处理模式(-b -n1)运行顶部,只需使用sed删除顶部行:

top -b -n1 | sed 1,7d

这将删除顶部7个标题行,这些标题行仅输出并仅返回进程。

答案 3 :(得分:1)

这将转储输出,如果需要,可以将其重定向到任何文件。

top -n1  |grep -Ev "Tasks:|Cpu(s):|Swap:|Mem:"

答案 4 :(得分:1)

在这种情况下,

egrep可能已经足够了,但我想补充说perl -lane可以用闪电般的速度做这件事:

top -b -n 1 | perl -lane '/PID/ and $x=1; $x and print' | head -n10

这样你可能会忘记grep,sed,awk等的精确参数,因为perl通常比这些工具快得多。

答案 5 :(得分:1)

要监视特定进程,以下命令对我有用-

top -sbn1 -p $(pidof <process_name>) | grep $(pidof <process_name>)

要获取所有过程信息,可以使用以下命令-

top -sbn1|sed -n '/PID/,/^$/p'

答案 6 :(得分:0)

在Mac上,您不能使用其他许多答案中使用的-b

在这种情况下,命令将为top -n1 -l1 | sed 1,10d

仅抓取第一条过程行(及其标头),仅记录一次,而不是交互式,然后取消显示前10行的top命令的常规信息。