
¿Es posible obtener una barra de progreso confiable (o simplemente una información confiable sobre cuánto tiempo llevará) al hacerlo updatedb
?
Respuesta1
Esta no es una solución eficiente, pero no es tan mala como recorrer todo dos veces.
El número de archivos procesados por updatedb
es igual a:
updatedb -v | wc -l
o aproximadamente igual a:
find / -mount | wc -l
No podemos usar estos comandos para obtener el número, porque se repetiría dos veces.
Pero podemos usar la cantidad de inodos usados, que es aproximadamente la misma:
df -i | grep '/$' | awk '{print $3}'
Teniendo este valor, podemos calcular qué tan lejos llegamos mientras updatedb -v
se ejecuta el comando:
count=$(df -i | grep '/$' | awk '{print $3}')
sudo updatedb -v | while read
do
printf "%3d\r" $((100 * (++i) / count))
done
Esto es muy ineficiente porque printf
se llama para cada línea en la salida de updatedb -v
. Mejor si printf
solo hacemos algunas de las líneas.
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
Respuesta2
No, no existe tal opción y tampoco debería tener ninguna.
Si necesita medir eso, primero debe saber cuántos archivos hay presentes en su sistema, eso significa recorrer todo dos veces, puede ser lento.
Un ejemplo evidente es que si extrae el código fuente del kernel con file-roller
, es más lento que hacer lo mismo directamente tar
, porque file-roller necesita archivar todos los archivos primero (de lo contrario, la barra de progreso podría mostrarse incorrectamente) y usted espera un mientras que antes de que comenzara el proceso de extracción.