Ich habe einen Anwendungsfall, wo ich einen Prozess habe, der parent
Prozess ist und es verschiedene child
Prozesse hervorbringt, die jeweils eine ssh
Verbindung überwacht. Dieser parent
Prozess sollte endlos als Teil eines Dienstes laufen. Aber, wenn eine dieser ssh
Verbindung geschlossen ist, dann wird dieser child
Prozess ein zombie
Prozess. Auf diese Weise werden viele zombie
Prozesse jedes Mal erstellt, wenn eine ssh
Verbindung geschlossen wird.Entfernen eines Zombie-Prozesses
Ich möchte die Anzahl der zombie
Prozesse so minimal wie möglich halten. So weit ich weiß, SIGTERM
oder SIGKILL
entfernt einen zombie
Prozess. Da der parent
Prozess endlos läuft, kann der zombie
Prozess nicht durch Warten auf parent
beendet werden.
Gibt es eine Möglichkeit, den Zombie-Prozess zu entfernen? Oder etwas, das ich falsch verstanden habe?
Ich benutze Python. Ich habe es genauso versucht. Anstelle der 'join()' habe ich sie durch 'os.waitpid (pid, os.WNOHANG)' ersetzt. Es werden immer noch "Zombie" -Prozesse erstellt. Mache ich etwas falsch? – nidHi
Haben Sie den Rückgabewert des waitpid überprüft? –
Ich weiß nicht in Python. Aber ich denke, wir müssen irgendein Argument an den os.waitpid übergeben, um den exist-Status zu erhalten? –