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