2

ベンチマーク スクリプトの場合、ちょっとした操作の直後に iowait % を抽出する必要があります。

今のところ、私が見つけた最良の方法はこれでした: IOWAIT=top -bn2 | awk '$1~/Cpu/ {print $6}' | sed -n '2p' | tr -d '%wa,'

正しい出力は 2.1 のようなものです:

まず、「-bn2」を正確に指定しなかった場合、理由はわかりませんが、キャプチャを 1 回だけ実行すると、常に 0.1% になります。そのため、キャプチャを 2 回行い、awk して iowait フィールドを取得し、2 行目を sed してから「%wa」を削除します。

参考までに、ここに出力がありますtop -bn2 | grep Cpu

Cpu(s):  2.8%us,  0.4%sy,  0.0%ni, 96.6%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st<br>
Cpu(s):  0.2%us,  2.9%sy,  0.0%ni, 87.1%id,  9.5%wa,  0.0%hi,  0.3%si,  0.0%st

私の問題は次のとおりです。100.0% (たとえばアイドル状態) で 1 つの列を取得すると、列番号がシフトされるため、awk が機能しなくなり、「0.0%hi」フィールドが取得されます。

私の質問は次のとおりです。

- awk に "%wa" を使用して列に移動するように指示する方法は?

誰かが私がやろうとしていることへの最善のアプローチを持っているなら、もちろん私は提案に非常にオープンです!

ありがとう

4

3 に答える 3

0

オールインワン

top -bn2 | awk '$1~/Cpu/&&NR==2{for (i=1;i<=NF;i++)if ($i~/%wa/) {sub(/%wa,/,X,$i);print $i}}' 
于 2014-02-21T11:32:45.180 に答える