時間による数値の変化率の計算

時間による数値の変化率の計算

ファイルを処理するプログラムがあります。 ls | wcを使用すると、次のようにファイル数が減っていることを確認できます。

ubuntu@h:/home/user/data/013176$ ls -1 | wc
3245666 29210987 246670579
ubuntu@h:/home/user/data/013176$ ls -1 | wc
2768811 24919292 210429599
ubuntu@h:/home/user/data/013176$ ls -1 | wc
2662466 23962187 202347379

時間が経つにつれて、次の内容を表示できるようにファイルの使用率を計算するツールがあるかどうか疑問に思います。

Current File Count: 2662466 rate = 5.6/s

現在の回数と速度に基づいて完了時間を予測できる場合は、より良いでしょう。

ベストアンサー1

非常に単純な概念証明で必要な作業を実行できます。

#!/bin/bash

initial_state=$(ls -1 | wc -l)
sleep 1
current_state=$(ls -1 | wc -l)
rate=$(echo $initial_state - $current_state | bc)
eta=$(echo $current_state / $rate | bc)

echo "Current file count: $current_state rate = $rate /s"
echo "Aprox. time to completion: $eta"

これは、実行中のディレクトリの初期状態を読み取り、(およそ)1秒後に再確認してから、1秒あたりの出力変更率を提供します。そこから近似値を計算するのは簡単です。完全な時間。

編集:非常にシンプルでおおよその完了時間が追加されました。

編集:リアルタイムアップデートを取得するには、スクリプトに単純なwhileループを追加できますが、そうすると実行中の端末がロックされます。

おすすめ記事