PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm per Skript bei bestimmter Ausgabe abbrechen



Chrissss
12-02-2005, 16:45
Hi!

Ich habe hier ein Berechnungstool, das fest 10000 Rechenschritte durchmacht. Die Ausgabe sieht im Prinzip so aus:

Step1....
Step2....
Step3....
usw.

Wie gesagt, bei Step10000 bricht das Prohramm dann ab. Da mich an sich nur die ersten Tausend Schritte interessieren und ich keinen Bock habe immer ewig zu warten, würde ich das Programm gerne über ein Skript abbrechen. Meine Idee sieht bislang so aus:

#!/bin/bash
echo "Start Calculation of: $1"
until [ "$CHECK" != "" ]
do
CHECK=(`/usr/bin/startcalc $1 | grep Step1000`)
done
Doch das klappt so überhaupt nicht. Das Programm rennt und rennt und rennt. Das Programm zu ändern ist leider nicht möglich, da ich den Source nicht habe.

Wäre nett wenn mir hier jemand aus der Patsche helfen könnte.

Danke
Chrissss

peschmae
12-02-2005, 22:04
Das Problem ist wohl dass er erst vom Ausführ-Befehl weitergeht wenn der fertig und beendet ist.

Ich würde mal folgenden Ansatz versuchen:



/usr/bin/startcalc > /tmp/calc_loc &


und dann alle paar Sekunden das log greppen und wenn der fertig ist den Prozess killen. Kann man sicher noch etwas ausfeilen und die Datei eventuel durch was schlaueres (schnelleres) ersetzen.

MfG Peschmä

Chrissss
14-02-2005, 19:02
Danke dir, hab die Sache mittlerweile so gelöst:

/usr/bin/startcalc $1 | grep Step1000 > /tmp/$1.log &

dateigroesse=0
while [ $dateigroesse -eq 0 ]
do
dateigroesse=$(ls -l /tmp/$FILE.log | awk '{print $5}')
sleep 300
done

AKTUELLEPID=`pgrep -f /usr/bin/startcalc"`
kill $AKTUELLEPID
rm /tmp/$1.log
Gibt es noch eine elegantere Lösung als die "until"-Schleife, um die Ändernung an dem Logfile zu überwachen?

Danke
Chrissss

peschmae
14-02-2005, 20:25
Ich wüsste jetzt gerade nichts. Aber am Ende täts auch killall direkt statt Pids auslesen und dann alle Killen :)

MfG Peschmä