¿Cómo puedo seguir el progreso de dd?

Respuestas:

57

La misma información, mostrada cada segundo en la respuesta de klanomath, puede mostrarse usando su comando. Solo necesita ingresar un controlTcarácter desde el teclado mientras ddse ejecuta el comando.

Al presionar el controlTcarácter, está enviando la misma SIGINFOseñal al ddcomando que pkill -INFO -x ddenvía el comando .

David Anderson
fuente
25

A partir de coreutils 8.24, dd agregó opciones de estado. Instale coreutils con Homebrew para actualizar dd.

brew install coreutils
# All commands have been installed with the prefix 'g'
sudo gdd if=XXXX.iso of=/dev/diskX bs=1 status=progress 

> example:
> 139648967 bytes (140 MB, 133 MiB) copied, 304 s, 459 kB/s    
davidcondrey
fuente
3
No sabía sobre coreutils, muy útil.
SteveLambert
1
Aunque esto funciona, usted anula el aumento de velocidad del uso del disco sin
formato
8

dden sí mismo no proporciona una barra de progreso. Sin embargo, puede estimar el progreso del proceso de copia dd agregando un comando pkill -INFO .

Ejemplo:

dd if=/dev/zero of=/dev/null bs=64m count=1000 & while pkill -INFO -x dd; do sleep 1; done

Resultado:

[1] 37691
0+0 records in
0+0 records out
0 bytes transferred in 0.028923 secs (0 bytes/sec)
275+0 records in
275+0 records out
18454937600 bytes transferred in 1.029698 secs (17922667819 bytes/sec)
553+0 records in
553+0 records out
37111201792 bytes transferred in 2.048291 secs (18118129881 bytes/sec)
829+0 records in
829+0 records out
55633248256 bytes transferred in 3.068911 secs (18128009214 bytes/sec)
1000+0 records in
1000+0 records out
67108864000 bytes transferred in 3.720346 secs (18038339571 bytes/sec)
[1]+  Done                    dd if=/dev/zero of=/dev/null bs=64m count=1000

Lo que se traduce en 18.1 GB / s.

klanomath
fuente
¿Cuáles son las especificaciones de hardware de la máquina en la que ejecutó ese comando?
user3439894
@ usuario3439894 i7 iMac de 3,5 GHz. ¿Por qué?
klanomath
Solo tenía curiosidad por la salida de bytes / seg, que por cierto es de 16.8 GB / s (redondeada) ya que esos son cálculos de base 2, no de base 10.
user3439894
5

En primer lugar, instale Homebrew Package Manager . Luego tienes que instalar pvy dialogcon este comando:

brew install pv dialog

Luego puede ejecutar este comando para obtener una barra de progreso con el comando:

dd if=disk.img bs=1m | pv disk.img | dd of=/dev/diskX bs=1m

pero asegúrese de reemplazar disk.imgcon la ruta a la imagen y diskXcon el identificador de disco de su tarjeta SD. Si quieres algo más gráfico, puedes probar esto:

(dd if=disk.img bs=1m | pv -n disk.img | dd of=/dev/diskX bs=1m conv=notrunc,noerror) 2>&1 | dialog --gauge "Writing image to SD card..." 10 70 0

Fuente: /ubuntu//a/516724/765767

pixelomer
fuente
3

Puede presionar Control+ tmientras ddse ejecuta el comando o para una buena barra de progreso puede instalar pv(visor de tuberías) a través de Homebrew:

brew install pv

y luego ejecutar:

sudo dd if=disk-image.img | pv | sudo dd of=/dev/disk2

o (conociendo el tamaño de la imagen, 16 GB en este ejemplo):

dd if=disk-image.img | pv -s 16G | dd of=/dev/disk2


Ejemplo de salida 2:

(datos transferidos, tiempo transcurrido, velocidad, barra de progreso y tiempo estimado):

    1.61GiB 0:12:19 [2.82MiB/s] [===>                 ] 10% ETA 1:50:25
Guglie
fuente
2

¡Eso es fácil! Para macOS High Sierra y versiones inferiores, solo ejecute un ciclo while y se ejecutará hasta que termine. Solo asegúrese de hacer el siguiente código en otra ventana:

El código a continuación funcionará de fábrica cuando esté en un arranque de firmware o dentro del sistema operativo completo

while kill -0 $PID; do $(caffeinate -t 10) $(kill - INFO $PID) echo “still copying file” “$(date)”; done

^ Para mantener la máquina despierta (cafeína) sin el uso de "homebrew" o herramientas no disponibles en Mac OS X estándar, ya que homebrew requiere Internet y un sistema operativo real para instalarlo.

NOTA: lo anterior necesita que sustituya el PID con su ID de proceso y mostrará constantemente el progreso

Don-Pierre Halfaway
fuente
También descubrí que la máquina estaba despierta para que no volviera a dormir y tuviera que despertarla constantemente.
Don-Pierre Halfaway
El guión anterior le indica la fecha, le da el estado de la copia y lo mantiene despierto cada 10 segundos
Don-Pierre Halfaway
Se utiliza mejor para terminal en Mac cuando no está en el sistema operativo completo. Pero dentro de Firmaware / bios. Definitivamente una solución para recordar
Don-Pierre Halfaway
¿Cuál es el propósito de la $(...)? Sé lo que hacen en general, solo me pregunto por qué los estás usando aquí.
nohillside
para escapar de espacios y hacer que el comando se ejecute todo dentro de una línea. Estoy seguro de que podría haber duplicado el "(" y ")", pero quería que las personas vieran las opciones disponibles en un enfoque laico
Don-Pierre Halfaway