Wie kann ich den Fortschritt von dd verfolgen?

Antworten:

57

Dieselben Informationen, die in der Antwort von klanomath jede Sekunde angezeigt werden, können mit Ihrem Befehl angezeigt werden. Sie müssen nur ein controlTZeichen über die Tastatur eingeben, während der ddBefehl ausgeführt wird.

Durch Drücken des controlTZeichens senden Sie dasselbe SIGINFOSignal an den ddBefehl, den der Befehl pkill -INFO -x ddsendet.

David Anderson
quelle
25

Ab Coreutils 8.24 hat dd Statusoptionen hinzugefügt. Installieren Sie coreutils mit Homebrew, um dd zu aktualisieren.

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
quelle
3
Ich wusste nichts über Coreutils, sehr praktisch.
SteveLambert
1
Obwohl dies funktioniert,
heben
8

ddselbst bietet keinen Fortschrittsbalken. Sie können den Fortschritt des dd-Kopiervorgangs abschätzen, indem Sie den Befehl pkill -INFO hinzufügen .

Beispiel:

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

Ergebnis:

[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

Das sind satte 18,1 GB / s.

klanomath
quelle
Was sind die Hardwarespezifikationen des Computers, auf dem Sie diesen Befehl ausgeführt haben?
user3439894
@ user3439894 i7 iMac mit 3,5 GHz. Warum?
Klanomath
War nur neugierig wegen der Bytes / Sek-Ausgabe, die übrigens tatsächlich 16,8 GB / s (aufgerundet) ist, da es sich um Berechnungen zur Basis 2 und nicht zur Basis 10 handelt.
user3439894
5

Installieren Sie zunächst Homebrew Package Manager . Dann müssen Sie pvund dialogmit diesem Befehl installieren :

brew install pv dialog

Sie können dann diesen Befehl ausführen, um eine Fortschrittsanzeige mit dem folgenden Befehl zu erhalten:

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

Achten Sie jedoch darauf, disk.imgden Pfad zum Image und diskXdie Festplattenkennung Ihrer SD-Karte anzugeben. Wenn Sie etwas grafischeres möchten, können Sie dies versuchen:

(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

Quelle: https://askubuntu.com/a/516724/765767

Pixelomer
quelle
3

Sie können Control+ drücken, twährend der ddBefehl ausgeführt wird, oder für eine schöne Fortschrittsanzeige pv(Pipe Viewer) über Homebrew installieren :

brew install pv

und dann ausführen:

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

oder (in diesem Beispiel 16 GB bei bekannter Bildgröße):

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


Beispielausgabe 2:

(übertragene Daten, verstrichene Zeit, Geschwindigkeit, Fortschrittsbalken und geschätzte Zeit):

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

Das ist einfach! Führen Sie für macOS High Sierra und niedriger einfach eine while-Schleife aus, und die Schleife wird ausgeführt, bis sie abgeschlossen ist. Stellen Sie einfach sicher, dass Sie den folgenden Code in einem anderen Fenster ausführen:

Der folgende Code funktioniert sofort, wenn Sie eine Firmware starten oder das Betriebssystem vollständig nutzen

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

^ Um die Maschine ohne die Verwendung von „Homebrew“ oder Tools, die in Standard-Mac OS X nicht verfügbar sind, wach zu halten (koffeinfrei), da für die Installation von Homebrew das Internet und ein tatsächliches Betriebssystem erforderlich sind.

ANMERKUNG: In den obigen Schritten müssen Sie die PID durch Ihre Prozess-ID ersetzen. Der Fortschritt wird ständig angezeigt

Don-Pierre Halfaway
quelle
Ich fand auch weg, um die Maschine wach zu halten, damit Sie nicht schlafen zurückkommen und sie ständig aufwachen müssen.
Don-Pierre Halfaway
Das obige Skript teilt Ihnen das Datum mit, gibt Ihnen den Status des Kopierens und hält es alle 10 Sekunden wach
Don-Pierre Halfaway
Es wird am besten für ein Terminal auf einem Mac verwendet, wenn Sie nicht mit dem vollständigen Betriebssystem arbeiten. Aber innerhalb von Firmaware / BIOS. Auf jeden Fall eine Lösung, an die man sich erinnern sollte
Don-Pierre Halfaway
Was ist der Zweck von $(...)? Ich weiß, was sie im Allgemeinen tun. Ich frage mich nur, warum Sie sie hier verwenden.
Nohillside
Leerzeichen zu entkommen und den Befehl alle innerhalb einer Zeile auszuführen. Ich bin sicher, dass ich das "(" und ")" verdoppeln könnte, aber ich wollte, dass die Leute die verfügbaren Optionen in einem
Laienansatz sehen