VMSTATコマンド(またはそのようなもの)を実行し、タイムスタンプを行に含める方法はありますか?コマンドの出力をパイプ処理して結果を操作できることは知っていますが、そうすると、ジャンク情報を取得します。 VMSTATの最初の行には偽のデータが含まれていると言われ、基本的に最初の行のリストが繰り返されます。
VMSTATまたは同様のものを使用して、この種のデータを取得する方法はありますか?
20090826.134908 0 0 0 241832 120064 3023856 0 0 0 1 0 0 0 0 100 0
ありがとう!
IVRアベンジャー
vmstat -n 1 | (while read; do echo "$(date +%Y%m%d.%H%M%S) $REPLY"; done) | tail -n +3
while sleep 1 ; do echo `date '+%Y%m%d.%H%M%S'` `vmstat | head -3 | tail -1` ; done
Sarの方がうまくいくかもしれません:
sysstatパッケージの一部であるsarコマンドをお勧めします。これにはデフォルトでタイムスタンプが含まれ、あらゆる種類のデータを取得するためのスイッチがあります。最も基本的な使用法は次のとおりです。
sar 1 3 #interval of 1, for a count of 3
メモリとページングの統計を取得するには、「mansar」を参照してください。
vmstatを使用する場合:
vmstatを使用する場合、ターミナルがいっぱいになると、ヘッダーが再度出力されます(少なくともmy GNU Version)なので、-nスイッチを使用してこれを抑制します。
「[結果を操作する]と、ジャンク情報が表示される」とはどういう意味かわかりません。あなたはこのようなことをすることができます:
vmstat 8 | sed '3d'
これにより、常に無視するように指示されている行が削除されます。または、それとヘッダーも削除する場合は、次のようにします。
vmstat 8 | sed '1,3d'
これはヘッダーも処理します。ヘッダーが繰り返される場合は、次のようなものを使用できます。
vmstat 8 | sed '3d; /memory/d; /free/d;'
私の場合、「メモリ」は1行目にあり、「空き」は2行目にありました。独自の適切な文字列に置き換えてください。
これが迅速で汚い解決策です:
while true; do date;vmstat 1 2|tail -n1; done
ちなみに、最初の行は偽物ではありません。最後の再起動以降の平均が含まれています。
コマンドの出力をパイプ処理して結果を操作できることはわかっていますが、そうすると、ジャンク情報が取得されます
それが何を意味するのかわかりません。コマンドで必要な出力が得られない場合は、出力をパイプしてフォーマットする以外に何もすることは考えられません。
とにかく、これはあなたが望むフォーマットを生み出します。
$ date=`date "+%Y%m%d.%H%M%S"` && vmstat=`vmstat | tail -1` && echo $date$vmstat
20090827.175715 3 1 8 116848 121072 599320 0 0 0 4 3 6 0 0 100 0