09 Mar 2010

Abfragen des Fortschrittes eines Linux-Befehls wie dd

Den Fortschritt von dd abfragen: Wenn man mit dd Festplatten klont, kann das sehr lange dauern. Oft möchte man wissen, wie weit der Prozess fortgeschritten ist, und wielange es noch dauert.

Der Befehl dd unterstützt das Signal USR1, mit dem er den momentanen Fortschritt ausgibt. Dazu ein zweites Terminal aufmachen, die Prozess-ID des dd-Befehls abfragen und das USR1-Signal senden.

# dd if=myimage.img of=/dev/sda1

Ein zweites Terminal öffnen, dort eingeben:

# ps ax |grep -i [d]d
    2 ?        S<     0:00 [kthreadd]
 2835 ?        S      0:00 hald-addon-input: Listening on /dev/input/event2 /dev/input/event1 /dev/input/event0
 2844 ?        S      0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
 2848 ?        S      0:04 hald-addon-storage: polling /dev/hdc (every 2 sec)
 3408 pts/1    R+    26:55 dd if myrescue.img of /dev/sda1

die Prozess-ID des dd-Befehls ist 3408, jetzt eingeben:

# kill -USR1  3408

im ersten Terminal, in welchem dd gestartet wurde, kann nun der Augenblicks-Fortschritt von dd abgelesen werden, inklusive der Übertragungsrate, mit der sich die Gesamtdauer errechnen lässt.

# dd if=myimage.img of=/dev/sda1
133766556+0 records in
133766556+0 records out
68488476672 bytes (68 GB) copied, 1746.96 s, 39.2 MB/s

Happy Hacking!