2017-01-17 7 views
0

私は100以上のサーバーを使用しています。すべてが2〜16コアの異なるCPUを使用しています。可変コア量のdstatから各コアのCPUアイドル率を取得します

私は、次のコマンド(DSTATは、すべてのサーバーにインストールされている)を介して各コアのアイドルCPUを得ることができます:私は、実行時にコア数を知っているので、コアの数が行くこと

dstat -c -C 0,1,2,3,4,5,6,7 --noheaders --nocolor --noupdate 3 1 

-Cに差はありません。次のように出力される。

-------cpu0-usage------ -------cpu1-usage------ -------cpu2-usage------ -------cpu3-usage------ -------cpu4-usage------ -------cpu5-usage------ -------cpu6-usage------ -------cpu7-usage------ 
usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq 
    5 3 90 0 0 2: 4 3 91 0 0 2: 4 3 91 0 0 2: 6 4 88 0 0 2: 2 1 96 0 0 1: 2 1 96 0 0 1: 2 1 96 0 0 1: 7 5 75 0 0 13 
    3 1 95 0 0 1: 2 1 96 0 0 0: 5 2 93 0 0 1: 2 1 96 0 0 1: 1 0 99 0 0 0: 1 1 97 0 0 1: 1 0 98 0 0 0: 23 16 16 0 0 45 

私が最後の行から、各コアのidl値を「抽出物」、およびコンマ区切り形式でそれを吐き出す必要があります。だから、データセット以上、私は次のような出力を持つようにしたいから:

95,96,93,96,99,97,98,16

私はgrep/awkは-fooが非常に悪く、することができます誰かが助けますか?

答えて

1
$ awk '{out=""; for (i=3;i<=NF;i+=6) out = out (i>3?",":"") $i} END{print out}' file 
95,96,93,96,99,97,98,16 
1

tail -n1を使用して出力の最後の行を取得します。 3列目から6列ごとに必要なように聞こえますか? awkのforループはそれを行うことができます。

yourcommand | tail -n1 | awk '{for (i=3; i<=NF; i+=6) print $i }' | tr '\n' ',' 
+0

おかげで、ほとんどの作品を:そして、あなたが望むようにコンマ改行を変更するtrを使用しています。 3列目はどのように始めるのですか? – Yegor

+0

awkコマンドで 'i = 3'だったはずです。答えで修正されました。 –

+0

これは、行の最後に後続のカンマを追加し、改行が終わらない結果を出力するので、結果はPOSIXのテキスト "file"ではないので、後続のコマンドで何ができるのでしょうか? –

関連する問題