2017-09-15 11 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回以上表示されるため、最後のオカレンスを印刷するだけで済みます。 –

答えて

2

awk解決策。

1ライナー:

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 

そして今、あなたが私のメールクライアントが何であるかを知っています。

関連する問題