PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Statusabfrage zu dd per Script?



Nix
23-12-2004, 00:50
Hallo,

ich möchte ein kleines Script schreiben, bei dem ein User eine im Rechner 'steckende' CompactFlash-Karte per dd auf Festplatte sichern kann. Leider gibt es bei dd scheinbar keine Möglichkeit, direkt einen Status abzufragen. Da aber das Kopieren der Karte bei z.B. 1 GB Kapazität schon etwas dauert, möchte ich dem User schon ein Feedback geben.

In der Manpage zu dd steht, daß mit dem Signal USR1 ein Status auf stderr geschrieben wird. Leider kann ich den irgendwie nicht in meinem Script nutzen, oder auf stdout umleiten oder in eine Datei, um ihn dann auszulesen.

Hier ein paar Zeilen aus diesem Script:



FILENAME=`kdialog --getsavefilename ~/backup "*.img | Kartenimages"`
dd if=/dev/hdc of=$FILENAME &
PID= `ps -aeo "%p %c %a" | grep 'dd if /dev/hdc' | awk '{print $1}'`
STATUS=`kill -USR1 $PID 2<&1`
kdialog --msgbox $STATUS


So stelle ich es mir vor, aber es läuft nicht. Die PID bekomme ich so, aber nicht STATUS. Wie bekomme ich für den Anfang die Ausgabe des kill-Befehls in die STATUS-Variable? Später will ich das in einer Schleife abfragen und mit einer Progress-Bar anzeigen.

Danke schonmal, Jens

anda_skoa
23-12-2004, 12:40
Die PID bekomme ich so, aber nicht STATUS.

PID geht auch leichter, die steht nach dem Start des dd Befehls in $!



Wie bekomme ich für den Anfang die Ausgabe des kill-Befehls in die STATUS-Variable?

Das ist schon richtig so, aber vermutlich hat der kill Befehl keine Ausgabe.
Vermutlich willst du auch die stderr Ausgabe von dd, oder?

Ciao,
_

Nix
23-12-2004, 16:23
Das ist schon richtig so, aber vermutlich hat der kill Befehl keine Ausgabe. Vermutlich willst du auch die stderr Ausgabe von dd, oder?

Genau da lag mein Denkfehler, Danke. Wenn kill das gar nicht ausgibt, sondern dd, dann kann ich lange warten ;)
Habe jetzt im dd-Aufruf stderr auf stdout und dann in eine Datei umgeleitet und bekomme jetzt die Daten, die ich brauche.

mfG, Jens