Come posso monitorare i progressi di dd


Risposte:


57

Le stesse informazioni, visualizzate ogni secondo nella risposta di klanomath, possono essere visualizzate usando il tuo comando. Devi solo inserire un controlTcarattere dalla tastiera mentre il ddcomando è in esecuzione.

Premendo il controlTcarattere, si invia lo stesso SIGINFOsegnale al ddcomando pkill -INFO -x ddinviato dal comando .


25

A partire da coreutils 8.24, dd ha aggiunto opzioni di stato. Installa coreutils con Homebrew per aggiornare 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    

3
Non sapevo di coreutils, molto utile.
SteveLambert,

1
Anche se funziona, annulli l'aumento di velocità dell'utilizzo del Raw Disk
eyoung100

8

dddi per sé non fornisce una barra di avanzamento. È possibile stimare l'avanzamento del processo di copia dd aggiungendo un comando pkill -INFO .

Esempio:

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

Risultato:

[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

Il che si traduce in un enorme 18,1 GB / s.


Quali sono le specifiche hardware della macchina su cui hai eseguito quel comando?
user3439894

@ user3439894 i7 iMac a 3,5 GHz. Perché?
klanomath,

Era solo curioso a causa dell'output di byte / sec, che in realtà è in realtà 16,8 GB / s (arrotondato per eccesso) in quanto quelli sono calcoli di base 2, non di base 10.
user3439894

5

Prima di tutto, installa Homebrew Package Manager . Quindi devi installare pve dialogcon questo comando:

brew install pv dialog

È quindi possibile eseguire questo comando per ottenere una barra di avanzamento con il comando:

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

ma assicurati di sostituirlo disk.imgcon il percorso dell'immagine e diskXcon l'identificatore del disco della scheda SD. Se vuoi qualcosa di più grafico, puoi provare questo:

(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

Fonte: /ubuntu//a/516724/765767


3

Puoi premere Control+ tmentre il ddcomando è in esecuzione o per una bella barra di avanzamento puoi installare pv(pipe viewer) tramite Homebrew:

brew install pv

e quindi eseguire:

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

oppure (conoscendo la dimensione dell'immagine, 16 GB in questo esempio):

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


Esempio di output 2:

(dati trasferiti, tempo trascorso, velocità, barra di avanzamento e tempo stimato):

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

2

Questo è facile! Per macOS High Sierra e versioni precedenti, basta eseguire un ciclo while e funzionerà fino al termine. Assicurati di fare il codice qui sotto in un'altra finestra:

Il codice seguente funzionerà immediatamente durante l'avvio del firmware o all'interno del sistema operativo completo

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

^ Per mantenere la macchina sveglia (caffeinato) senza l'uso di “homebrew” o strumenti non disponibili in Mac OS X standard poiché homebrew richiede Internet e un vero sistema operativo su cui installarlo.

NOTA: quanto sopra deve sostituire il PID con l'ID del processo e mostrerà costantemente l'avanzamento


Ho anche trovato via per mantenere la macchina sveglia in modo da non tornare a dormire e doverla svegliare costantemente.
Don-Pierre Halfaway,

Lo script sopra ti dice la data, ti dà le statistiche della sua copia e lo tiene sveglio ogni 10 secondi
Don-Pierre Halfaway,

È meglio utilizzato per il terminale su Mac quando non si è nel sistema operativo completo. Ma all'interno di Firmaware / bios. Sicuramente una soluzione da ricordare
Don-Pierre Halfaway,

Qual è lo scopo del $(...)? So cosa fanno in generale, mi chiedo solo perché li stai usando qui?
Nohillside

per sfuggire agli spazi e far eseguire il comando all'interno di una riga. Sono sicuro che avrei potuto raddoppiare il "(" e ")" ma volevo che le persone vedessero le opzioni disponibili in un approccio laico
Don-Pierre Halfaway,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.