PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script funktioniert nicht zuverlässig



Nix
28-12-2004, 10:36
Hallo,

ich möchte ein Sript schreiben, in dem eine CF-Karte mit einem vorhandenen Image beschrieben wird. Leider funktioniert das Script nicht immer, von zehn Durchläufen funktionieren drei. Meist gibt es schon nach der zweiten Zeile des folgenden Ausschnitts einen Fehler. Später sollen übrigens die ganzen echo-Zeilen raus und die K_FORTSCHRITT-Variable mit kdialog in einer Progressbar ausgegeben werden.



`nice -n 19 sudo dd if=$FILENAME of=/dev/hdc > /home/bla/dd.txt 2>&1 &`
PID=$(echo `ps ax | grep '[o]f /dev/hdc' | awk '{print $1}'`)
echo $PID
sudo kill -USR1 $PID
FORTSCHRITT=$(echo `more /home/bla/dd.txt | grep 'transferred' | awk '{print $1}'`)
echo $FORTSCHRITT
K_FORTSCHRITT=$(echo "$FORTSCHRITT/1024" | bc)
echo $K_FORTSCHRITT
while [ "$K_FORTSCHRITT" -lt "$FILE_GROESSE" ] ; do
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}'`)
echo $FORTSCHRITT
K_FORTSCHRITT=$(echo `"$FORTSCHRITT/1024" | bc`)
echo $K_FORTSCHRITT
done


In Zeile 3 soll die vorher erkannte PID vom Aufruf in Zeile 1 angezeigt werden, statt dessen bekomme ich schon eine Fehlermeldung bezüglich der vierten Zeile, als ob der kill-Befehl nicht richtig geschrieben wurde:


Usage:
kill pid ... Send SIGTERM to every process listed.
kill signal pid ... Send a signal to every process listed.
kill -s signal pid ... Send a signal to every process listed.
kill -l List all signal names.
kill -L List all signal names in a nice table.
kill -l signal Convert between signal numbers and names.

Manchmal wird aber eben auch die PID ausgegeben, und das Script läuft normal weiter. Woran kann das liegen?

Vielen Dank schonmal, Jens

PS: Ich weiß, daß man die PID auch einfacher bekommt, aber wohl nur wenn kein 'nice' und 'sudo' vor der eigentlichen Anweisung stehen (Zeile 1). Jedenfalls habe ich es mit $! nicht hinbekommen.

Hans-Georg Normann
28-12-2004, 16:12
Gibt es irgendwelche Fehlermeldungen?

Notfalls einmal das Script mit bash -xv .... starten.

Hans

Nix
29-12-2004, 17:49
Hallo,

habe in einer Mailingliste einen Tipp bekommen: den Aufruf von dd in ein externes Script legen, und dieses nun mit



PID=$(nice -n 19 sudo myScript $FILENAME)

aufrufen - jetzt gehts.


Gibt es irgendwelche Fehlermeldungen?

Nein, bis auf die Ausgabe des kill-Befehls.


Notfalls einmal das Script mit bash -xv .... starten.

Was hätte das bedeutet?

mfG, Jens

Hans-Georg Normann
29-12-2004, 21:19
Mit der Option -xv wird der Scriptablauf am Bildschirm ausgegeben und eventuelle Variablen und Metazeichen werden aufgelöst. Hilft dann bei der Fehlersuche.

Hans

Nix
30-12-2004, 20:40
Vielen Dank, Hans-Georg. Und sorry, solche Fragen sollte ich nicht stellen. Manchmal sollte man einfach mal 'ne manpage anschauen.

mfG, Jens

Hans-Georg Normann
31-12-2004, 15:01
Ich halte es da mit dem Spruch: Es gibt keine blöden Fragen, es gibt nur blöde Antworten.

Ich stell sogar "blöde" Fragen, wenn zwei über ein Gebiet fachsimpeln, von dem ich eigentlich keine Ahnung habe. Das ein oder andere Mal hat's dann auch schon gefruchtet, sprich da ging jemandem ein Licht auf :p Also merken: fragen, fragen, fragen..........

Hans