ubuntuusers.de

[bash] ein Skript "kill"en und alle im skript gestarteten prozesse ebenfalls beenden

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

dersven

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

HI!

Ich habe eine Skript skript geschrieben, dass einen Prozess aufruft, und eine Fortschritsanzeige über zenity anzeigt.

1
2
programm ${PARAMETER} 2> "${OUT_FILE}.err" | tee "${OUT_FILE}.out"  | \
zenity --progress --pulsate --auto-close --auto-kill --title "Suche läuft..." --text "Es wird gesucht!"

Nun funktioniert allerdings das "auto-kill" nicht so wie ich es möchte. es wird zwar mein Skript beendet, allerdings nicht das programm, dass ich innerhalb des Skriptes aufgerufen habe. Kann ich den Aufruf von programm als kind-Prozess meine Skriptes definieren, so dass dieses ebenfalls gekillt wird, wenn der elternprozess (in diesem Fall über zenity) beendet wird?.

Grüße und Danke für die Hilfe.

philonous

Avatar von philonous

Anmeldungsdatum:
2. Januar 2007

Beiträge: 290

Wohnort: München

Hallo,

hast du dir mal Zenity angeschaut? Ich glaube in Zeile 15-23 des ersten Beispielskripts findet sich die Antwort auf deine Frage: Die Klammerung der Kommandos bedeutet, dass diese Kommandos gemeinsam in einer Subshell ausgeführt werden. Jedenfalls müsste es so sein, wenn ich nach dem empfehlenswerten Artikel geh, über den ich gestern gestolpert bin (http://www.ibm.com/developerworks/aix/library/au-badunixhabits.html#six).

Also:

1
2
( programm ${PARAMETER} 2> "${OUT_FILE}.err" | tee "${OUT_FILE}.out" ) | \
zenity --progress --pulsate --auto-close --auto-kill --title "Suche läuft..." --text "Es wird gesucht!"

Hab's nicht probiert - aber HTH,
philonous

dersven

(Themenstarter)

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

nein, klappt auch nicht,... aber der artikel ist wirklich nett (soweit ich den schon gelesen habe). wie ermittelt zenity eigentlich, dass der prozess zuende ist? ich übergebe ja zimlich viel schrott an des Programm, nicht dass irgendwann eine 100 dort steht, und zenity meint "alles ist vorbei". naja, den prozess beenden tuts ja trotzdem nicht,...

Wie auch immer scheinbar werden die Prozesse, die in einer subshell gestartet werden nicht beendet, wenn das eigentliche Skript beendet wird. Scheint wohl nicht zu gehen :-/ naja, jetzt muss ich nur noch rausbekommen, wie zenity das ende eines Prozesses ermittelt,... nicht dass ich glaube, dass der prozess zuende (weil es dort steht) ist, obwohl er noch läuft,... (in dem speziellen fall sollte das über die Ressourcen-Anzeige gut zu ermitteln sein, da die CPU die meiste zeit zu 100% ausgelastet ist,.... Aber dann könnte ich mir auch gleich dieses anzeigefester sparen, wenn ich eh nachschauen muss, ob der prozess noch im Gange ist).

Grüße.

Antworten |