Am Dienstag, 28. Dezember 2004 15:13 schrieb Bernd Obermayr:
`nice -n 19 sudo dd if=$FILENAME of=/dev/hdc > /home/bla/dd.txt 2>&1 &`
Wozu die backticks?
Was sind backticks? Wenn Du nice meinst, das ist deshalb drin weil dd auf dem Zielrechner alles blockiert, da kann man kaum noch die Maus bewegen (ist ein Via Epia 533 MHz).
PID=$(echo `ps ax | grep '[o]f /dev/hdc' | awk '{print $1}'`) *Grusel*
Ja ja, macht Euch ruhig lustig über einen Scripting-Noob...;)
FORTSCHRITT=$(echo `more /home/bla/dd.txt | grep 'transferred' | awk '{print $1}'`)
nochmal *Grusel* ;)
Warum echo? Da grep sowieso eine Ausgabe auf stdout erzeugt, ist das echo überflüssig.
Weil ich noch nicht dahinter gekommen bin, wann ich was brauche. Und da nehme ich immer das, was zuerst funktioniert, bis mir jemand sagt wie es besser geht ;)
warum more? more ist ein Pager, also zum seitenweisen Lesen einer Datei gedacht.
Darauf zu kommen, daß grep direkt aus Dateien liest, ist mir wohl auch zu einfach gewesen.
2) Wo kommt $FILE_GROESSE her?
Wird vorher im Script aus dem Image gelesen.
rm -f /home/bla/dd.txt touch /home/bla/dd.txt sudo kill -USR1 $PID FORTSCHRITT=$(echo `more /home/bla/dd.txt | grep 'transferred' | awk '{print $1}'`)
1) /home/bla/dd.txt hast Du doch eben gelöscht, also ist die doch hier leer?
Nein, mit dem kill-Befehl wird ja wieder was reingeschrieben. Ja, das ist wieder so eine Noob-Krücke... ;)
2) siehe oben, und wenn Du eine Befehlsfolge mehrmals brauchst, mach ne Function draus.
Das ist 'ne Idee.
Ich vermute, dass der sudo-Aufruf fehlerhaft ist und deswegen $PID nichts oder eine Fehlermeldung enthält.
Aber warum 'nur' in zwei Dritteln aller Durchläufe?
Und wenn Du den Aufruf von dd in ein Script schreibst? --------8<-------- #!/bin/bash # script mydd # Syntax: mydd FILENAME dd if=$1 of=/dev/hdc > /home/bla/dd.txt 2>&1 & echo $! --------8<--------
Dann PID=$( nice -n 19 sudo mydd $FILENAME )
Was ändert der Aufruf durch ein zweites Script statt dem Direkt-Aufruf? (Ernsthafte Frage) mfG, Jens