0

iostat と vmstat を使用して統計データを収集しており、それぞれを定期的に 10 秒間実行しています。ただし、出力全体を印刷したくありません。iostat では、読み取りと書き込みの数のみを表示し、それらを列として表示したいと考えています。vmstat を使用して、空き、キャッシュ、およびバッファーの列を表示したいだけです。これどうやってするの?私が使用するフィルターは、この結果を返すだけです。システムは、デスクトップ端末とサーバーのみのバージョンの両方でubuntu 12.04です。それらは vmware プレーヤーを使用して実行されます。

ms total merged
0 0 0
0 0 0
0 0 0
0 0 0
758118 836340 1892
0 0 0
0 0 0
4

1 に答える 1

2

出力形式は次のとおりであると仮定します。

> iostat -dx sda
Linux 3.13.0-45-generic (hostname obscured)     03/22/2015  _x86_64_    (8 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               7.02    30.64    4.48    8.32   174.81   789.29   150.64     0.86   67.48   10.76   98.01   1.06   1.36

> vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 3728772 969952 614416 29911568    3   13    22    99    1    4 48  5 47  0  0

次の操作をiostat(必要に応じて 10 秒ごとに)行うことができます。

device_name=sda # or whatever device name you want
iostat -dx ${device_name} | awk 'NR==4 { print $4 " " $5 }'

出力例 ( r/s w/s):

4.48 8.32

1 より大きいカウントが必要な場合は、次のようにします。

iostat -dx ${device_name} ${interval} ${count} | awk 'NR==1 || /^$/ || /^Device:/ {next}; { print $4 " " $5 }'

出力例 (の場合device_name=sda; interval=1; count=5):

10.24 8.88
0.00 0.00
0.00 2.00
0.00 0.00
0.00 0.00

そして、vmstat(必要に応じて10秒ごとに)次のことを行うことができます:

vmstat | awk 'NR==3 {print $4 " " $5 " " $6}'

出力例 ( free buff cache):

969952 614416 29911568
于 2015-03-22T20:15:24.610 に答える