如何在顶部隐藏“空闲”(CPU和RAM)进程?

时间:2018-11-20 18:29:40

标签: linux awk grep top-command

我有一个基于顶部的linux命令,可以输出当前的任务快照(我从各种SE主题组装了它,因此它可能不是最佳选择,但对我有用):

top -bn 1 -i | grep "^ " | awk '{ printf("%s%s%s\n","
{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | tail -n +2 | gawk '{ 
print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'

输出是这样的:

  

[2018-11-20 18:09:11] {CPU:0.0,MEM:0.2,CMD:uwsgi}
  [2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:uwsgi}
  [2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
  [2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}
  [2018-11-20 18:09:11] {CPU:0.0,MEM:0.0,CMD:nginx}

实际上,每次执行命令都会得到300行。 我想删除具有“ CPU:0.0,MEM:0.0”的行。

我尝试过:top -i,但是删除了所有“空闲”任务,这意味着“ CPU:0.0”-但是那样,我将丢失所有任务,例如:CPU:0.0,MEM:0.2 (我想保留)

也许在命令的awk部分内添加了if-then-else吗?我试图对其进行破解,但无法正常工作。

1 个答案:

答案 0 :(得分:1)

grep会这样做:

... | grep -v "CPU:0.0,MEM:0.0"

在手册页中:

-v, --invert-match
    Invert the sense of matching, to select non-matching lines.