実行中に信頼できるプログレスバー(または所要時間に関する信頼できる情報)を取得できますかupdatedb
?
答え1
これは効率的な解決策ではありませんが、すべてを2回繰り返すほど悪くはありません。
処理されたファイルの数はupdatedb
次のとおりです。
updatedb -v | wc -l
またはおおよそ次のとおりです。
find / -mount | wc -l
このコマンドは2回繰り返されるため、数値を取得するために使用することはできません。
ただし、使用されているinodeの数を使用できますが、これはほぼ同じです。
df -i | grep '/$' | awk '{print $3}'
updatedb -v
この値を使用すると、コマンドの実行中に移動した距離を計算できます。
count=$(df -i | grep '/$' | awk '{print $3}')
sudo updatedb -v | while read
do
printf "%3d\r" $((100 * (++i) / count))
done
printf
これは、出力のすべての行に対して呼び出されるため、非常に非効率的ですupdatedb -v
。printf
特定の行だけを処理する方が良いでしょう。
count=$(df -i | grep '/$' | awk '{print $3}')
sudo updatedb -v | while read
do
if (( ++i % (count/20) == 0 )); then
printf "%3d\r" $((100 * i / count))
fi
done
答え2
いいえ、そのようなオプションは存在していません。
測定する必要がある場合は、まずシステムにいくつかのファイルがあるかどうかを知る必要があります。つまり、すべてを2回繰り返すと、速度が遅くなる可能性があります。
明らかな例は、カーネルソースコードを抽出するために使用する場合は、ファイルローラーが最初にすべてのファイルをアーカイブする必要があるため、file-roller
カーネルソースコード抽出を直接使用するよりも遅いことですtar
(そうしないと、進行状況バーが正しく表示されません。することができます)。その後、実際に開始する前に抽出プロセスが進行するのを待ちます。