La función dd parece congelarse cuando termina

La función dd parece congelarse cuando termina

Estoy intentando copiar una ISO en una memoria USB con este comando:

sudo dd bs=4M if=lubuntu-17.04-desktop-amd64.iso of=/dev/sdc status=progress 

Lo que es bastante sencillo. La ISO tiene un tamaño de 912M. ¿Por qué el texto de salida se congela aquí en lugar de finalizar el programa?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

Ni siquiera puedo detener la ejecución del programa con ctr-c.

Respuesta1

El comportamiento que estás viendo es solo ddsincronizar los datos en el disco después de la operación. Para optimizar las operaciones de IO, Linux a menudo lee datos en fragmentos más grandes que los solicitados (lectura anticipada) y retrasa las escrituras para que puedan combinarse (caché sucio). Al final de la operación, ddsincroniza el archivo en el disco o el kernel lo hace implícitamente y el proceso permanece activo hasta que finalizan todas las escrituras.

Si no hay otras operaciones masivas de IO en la máquina, debería poder estimar cuántos datos quedan por escribir mirando el valor "Sucio:" en /proc/meminfo- esta es la cantidad total de datos pendientes de escribir en el disco.

La cantidad de datos que el sistema puede dejar sin escribir en la memoria en cualquier momento se puede controlar con las siguientes perillas de sintonización sysctl. Por defecto sólo se utilizan las proporciones. Puede definir el valor en porcentaje (proporción) o bytes.

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

Encontrará la documentación oficial para estos parámetros aquí:

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

información relacionada