常に最新のエントリのみを保持するファイルにvmstat出力を挿入する方法

常に最新のエントリのみを保持するファイルにvmstat出力を挿入する方法

10秒ごとにvmstat出力をファイルに挿入したいと思います。これを行うには、次のコマンドを使用します。

vmstat 10 > vmstatfile.txt

これにより、vmstatfile.txtというファイルが作成され、10秒ごとに追加されます。私が望むのは、ファイルが大きくならないように、私のファイルには常にvmstatエントリ(最新のエントリ)を含める必要があるということです。可能ですか?どうすればいいですか?

ベストアンサー1

引数なしでvmstat単一のレポートが印刷されるため、単純なシェルループでゆっくり実行できます。

while true; do 
    vmstat > vmstatfile.txt
    sleep 10
done

ただし、最初のレポートは開始後の平均であるため、ファイルに最新の期間のレポートが含まれるようにするには、少なくとも2つのレポートを要求する必要があります。実行されるたびに印刷された最初のレポートを削除するには、削除(3行目の削除)を使用しますsed。ここでは一時ファイルを使用する必要があるため、実際のターゲットファイルにはいつでも部分出力は含まれません。

while true; do 
    vmstat 10 2 | sed -e 3d > vmstatfile.tmp
    mv vmstatfile.tmp vmstatfile.txt
done

おすすめ記事