• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Seine Kinder töten????

fabmo

Member
Hallo,

ich hab mal wieder ein Problem bei einem Shellskript. Das skript wirft
einige Kindprozesse ab, die dann allein weiterlaufen.

Nun möchte ich bei einem bestimmten Punkt in meinem Elternsktript dieses beenden (kill -9 $$) und aber auch alle Kindprozesse töten. Gibts es da eine Möglichkeit für?
 
A

Anonymous

Gast
fabmo schrieb:
Nun möchte ich bei einem bestimmten Punkt in meinem Elternsktript dieses beenden (kill -9 $$) und aber auch alle Kindprozesse töten. Gibts es da eine Möglichkeit für?

Wenn du deine Prozesse nicht mit "nohup" gestartet hast oder anders das Signal 1 maskiert hast, dann sollte das automatisch laufen.
Wenn sich ein Prozess beendet, dann sendet er allen Kindprozessen das Signal 1 "HUP". Im Normalfall reagiert der Kindprozess dann ebenfalls mit beenden. Ausnahme dann, wenn der Pozess derzeit nicht an eine CPU kommt, da er selbst auf das Beenden eines vom ihm gestarteten Prozesses wartet. Sobald er wieder an die CPU kommt, holt er das dann nach.

robi
 
Ich würde das so machen:

Code:
trap "kill -TERM \$MYCHILDS; exit 0"  0 1 2 3

sleep 3600 &
MYCHILDS="$MYCHILDS $!"

sleep 600 &
MYCHILDS="$MYCHILDS $!"
sleep 300 &

MYCHILDS="$MYCHILDS $!"
Trap sollte bei einem exit , exit 1, exit 2... alle Childs beenden, die hinter trap erwähnt sind. (ausser bei "9" und "SIGSTOP" )
Ansonsten kann man auch gezielt:
kill -TERM $MYCHILDS machen.

Haveaniceday
 

Linuxler

Member
"seine Kinder töten" ...wenn da nur mal nicht die Polizei an deiner Tür klingelt ;)
(sorry, konnte mir das nicht verkneifen; das wär ein gefundenes Fressen für Software, die das Internet nach Verbrechen durchsucht)

gruss Linuxler
 

Asem

Newbie
Code:
pkill -P $$

nebenbei: suizid mit SIGKILL ist i. d. r. doch etwas übertrieben, warum tut's nicht einfach ein exit?

-- asem
 
Oben