【发布时间】:2017-09-15 07:49:01
【问题描述】:
我想将一些流程数据写入文件。为此,我选择使用top。我想监控几个进程并绘制它们超时性能的图表。
我使用的是 Mac OS 10.12。我认为没有一种简单的方法可以获取版本号。
现在我有命令:
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,但是使用以下命令
top -l 2 -n 5 -o mem | sed '1,10d;n;' | awk '{ printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8); }'
只删除前 10 行,而不是 EACH 迭代的前 10 行。有人可以帮忙吗?
【问题讨论】:
-
作为一个建议:因为 pid 出现不止一次,你可以只打印最后一次出现。
标签: bash logging awk sed process