Hi,
ich würde gerne eine Prozesskillroutine schreiben, die erst mit kill auf den Prozess losgeht und wenn dieser sich weigert, zu sterben, mit kill -9.
pid=zu-killende-programm-pid
kill $pid
kill -9 $pid
if [[ $? == 0 ]] then
#Wenn exit-code von "kill -9" null (kill -9 ging, weil $pid noch am Leben)
echo $proc killed
else
echo $proc terminated
fi
Das Problem, was ich jetzt zu haben glaube, ist, dass kill -9 losrennt, bevor das Programm, dass mit kill terminiert werden soll, mit dem kill-bedingten Aufräumen fertig ist. Folge: faktisch wird jedes Programm bei diesem Code mittels kill -9 abgeschossen wird, was eigentlich nicht der Plan ist. Ich könnte jetzt ein "sleep" zwischen die beiden kills schieben, damit könnte ich den Prozessen aber nur einen definierten Zeitraum zum Aufräumen geben, ich würde am liebsten irgendetwas haben, was darauf wartet, dass der Prozess mit dem aufräumen fertig ist oder nicht.
Allerdings vermute ich, da kill nur Signale sendet, dass ich einfach keine Möglichkeit habe, zu unterscheiden, ob der Prozess gerade aufräumt oder blöd in der Gegend herumsteht, sollte ich hiermit Recht haben, würde ich gerne Empfehlungen haben, wie lange ich Prozessen Zeit zum Aufräumen geben sollte, um aufräumende Prozesse in Ruhe zu lassen und hängende zu killen. Ich bin mit solchen Zeiträumen so überhaupt nicht vertraut.
Alternativ ist ein gänzlich anderer Lösungsansatz für das Problem ebenfalls gerne gesehen.
Besten Dank schonmal!