Barra de progreso en actualizadob

Barra de progreso en actualizadob

¿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 updatedbes 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 -vse 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 printfse llama para cada línea en la salida de updatedb -v. Mejor si printfsolo 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.

información relacionada