2017-09-15 145 views
0

我想將一些過程數據寫入文件。爲此,我選擇使用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行,不是第10行,每行迭代。有人能幫忙嗎?

+0

作爲一個建議:因爲pid不止一次出現,你可以打印最後一次出現。 –

回答

2

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 

現在你知道我的郵件客戶端是什麼。