Das Senden von SIGTERM an „Skript“ führt zu einem Zombie-Prozess

Das Senden von SIGTERM an „Skript“ führt zu einem Zombie-Prozess

Ich implementiere ein einfaches System, um Jobs remote über SSH auszuführen. Mein Ziel ist es, den Job innerhalb eines auszuführen screen, seine gesamte Ausgabe aufzuzeichnen scriptund das Typescript auf einen Server hochzuladen, wenn der Job beendet wird. Ich habe jedoch Probleme mit der ordnungsgemäßen Handhabung von SIGTERM (z. B. wenn die Remote-Maschine heruntergefahren wird), da der scriptProzess beim Empfang von SIGTERM nicht beendet wird (stattdessen wird der darin ausgeführte Prozess scriptzu einem Zombie).

Nehmen wir den folgenden Befehl an:

script -e -q -c 'ping www.google.com'

killall -TERM scriptWenn Sie zum Senden eines SIGTERM-Signals an den Prozess verwenden script, scheint das SIGTERM-Signal an weiterzuleiten ping(was ihn beendet), er wird jedoch zu einem Zombie-Prozess und wird scriptnicht beendet:

> ps -aux | grep ping
karel    16460  0.0  0.0  10852  2732 pts/2    S+   12:57   0:00 script -e -q -c ping www.google.com
karel    16461  0.1  0.0      0     0 ?        Zs   12:57   0:00 [ping] <defunct>

Wenn ich das richtig verstehe, pingist der Prozess ein Zombie, weil der übergeordnete scriptProzess ihn noch beobachtet. Ist es jedoch möglich, die scriptBeobachtung des Prozesses zu beenden und ihn ordnungsgemäß zu beenden (während das Typescript geleert wird)?

verwandte Informationen