Prozess mitsamt allen Unterprozessen beenden
Geschrieben am 03.09.2009
Auf einem meiner Server hat vor kurzem ein Script verrückt gespielt, was zu einer sehr grossen Anzahl an Prozessen (mitsamt Unterprozessen) in der Warteschlange geführt hat. Um mir die Aufräumarbeiten etwas zu erleichtern, habe ich mir folgendes Script geschrieben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/bin/ksh # Löscht einen Prozess mitsamt allen Unterprozessen # Der PID eines Prozesses muss als erster Parameter angegeben werden ppid=$1 if [ -z $ppid ] ; then echo "Usage: $0 PID" exit; fi function kill_process_recursive { for i in `pgrep -P $1` do kill_process_recursive $i done echo $1 #kill $1 } kill_process_recursive $ppid exit; |
Beispiel :
1 2 3 4 5 6 7 | claude@hades /home/claude # sh kill_process_tree.sh 32461 2364 2363 24324 24334 24323 32461 |
Im Beispielscript habe ich kill $1 kommentiert und durch echo $1 ersetzt.
Damit die Prozesse auch wirklich beendet werden, muss man diese Änderung natürlich umdrehen