从顶部输出中删除标题

时间:2017-09-15 07:49:01

标签: bash logging awk sed process

我想将一些过程数据写入文件。为此,我选择使用@if($message) <p class="error-page-text">{{ $message }}</p> @else <p class="error-page-text">You don't have access to this page.</p> @endif 。我希望监控几个流程,并绘制一个超时性能图表。

我正在使用Mac OS 10.12。我不认为有一个简单的方法来获取版本号。

现在我有了命令: top

导致以下输出:


top -l 2 -n 5 -o mem | awk '{ printf("%-8s  %-12s  %-6s %-6s\n", $1, $2, $3, $8); }'

但是,我想删除标题并留下:

Processes:  390           total, 2015
2017/09/15  00:41:51
Load      Avg:          2.07,
CPU       usage:        5.11%  idle
SharedLibs:  169M          resident,
MemRegions:  117317        total, 1807M
PhysMem:  15G           used
VM:       2149G         vsize, swapins,
Networks:  packets:      24606796/21G
Disks:    2934900/103G  read,

PID       COMMAND       %CPU   MEM
0         kernel_task   0.0    1594M+
94178     idea          0.0    897M+
621       Google        Chrome 1
277       Google        Chrome 3865+
31724     Slack         Helper 223+
Processes:  390           total, 2021
2017/09/15  00:41:52
Load      Avg:          2.07,
CPU       usage:        4.47%  idle
SharedLibs:  169M          resident,
MemRegions:  117317        total, 1807M
PhysMem:  15G           used
VM:       2149G         vsize, swapins,
Networks:  packets:      24606796/21G
Disks:    2934900/103G  read,

PID       COMMAND       %CPU   MEM
0         kernel_task   3.9    1594M-
94178     idea          1.3    897M
621       Google        Chrome 1
277       Google        Chrome 3866+
31724     Slack         Helper 223

所有批次。我也可以省略PID COMMAND %CPU MEM 0 kernel_task 0.0 1594M+ 94178 idea 0.0 897M+ 621 Google Chrome 1 277 Google Chrome 3865+ 31724 Slack Helper 223+ 0 kernel_task 3.9 1594M- 94178 idea 1.3 897M 621 Google Chrome 1 277 Google Chrome 3866+ 31724 Slack Helper 223 行。

我已尝试使用PID COMMAND %CPU MEM但是以下命令

sed

只删除前10行,而不是EACH迭代的前10行。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

awk 解决方案。

一个班轮:

top -l 2 -n 5 -o mem | awk '/^PID/{if (p) next; p=1} p && NF>30 {printf("%-8s  %-12s  %-6s %-6s\n", $1, $2, $3, $8)}'

说明:

/^PID/{                    # line starts with PID
  if (p) next;             # if this is second time around, skip
  p=1                      # else: set var p to 1
} 
p && NF>30 {               # if p is set and number of fields > 30, print         
  printf("%-8s  %-12s  %-6s %-6s\n", $1, $2, $3, $8)
}

输出:

 $ top -l 2 -n 5 -o mem | awk '/^PID/{if (p) next; p=1} p && NF>30 {printf("%-8s  %-12s  %-6s %-6s\n", $1, $2, $3, $8) }'
 PID       COMMAND       %CPU   MEM
 0         kernel_task   0.0    1950M+
 320       idea          0.0    1007M+
 14246     thunderbird   0.0    541M+
 3142      Google        Chrome 1
 3136      Google        Chrome 2153+
 0         kernel_task   2.0    1950M-
 320       idea          3.1    1007M
 14246     thunderbird   0.0    541M
 3142      Google        Chrome 1
 3136      Google        Chrome 2153

现在你知道我的邮件客户端了。