Der beste Weg, um Zombie- und D-State-Prozesse unter Linux zu beenden

13

Was ist der beste Weg, um Zombie-Prozesse und D-Status-Prozesse mit einem einzigen Befehl zu beenden?

vnix27
quelle
Siehe auch
lepe

Antworten:

19

Doppeltippen.

Eigentlich neustarten. Es gibt keine wirkliche Möglichkeit, einen Zombie einfach loszuwerden, aber es gibt keinen Grund dafür, da ein Zombie keine Ressourcen auf dem Computer beansprucht. Es ist ein verwaister Eintrag in einer Prozesstabelle. Init soll es einsammeln, aber es ist ein Fehler aufgetreten. http://en.wikipedia.org/wiki/Zombie_process

Vielleicht fragst du, weil es ein schlimmeres Problem gibt ... bekommst du eine Schiffsladung Zombies, die deinen Prozesstisch durchstreifen? Das bedeutet normalerweise einen Programmfehler oder ein Problem mit einer Konfiguration. Sie sollten nicht viele Zombies im System haben. Ein oder zwei mache ich mir keine Sorgen. Wenn Sie fünfzig von ihnen von Apache oder einem anderen Daemon haben, haben Sie wahrscheinlich ein Problem. Aber das hängt nicht direkt mit Ihrer Frage zusammen ...

Bart Silverstrim
quelle
1
Es gibt rund 10 Zombie-Prozess
vnix27
Was sind die Prozesse?
Bart Silverstrim
15
/sbin/reboot

Du kannst keinen Zombie töten - er ist bereits tot

Wenn die ppid immer noch existiert, kann durch das Beenden der ppid die Anzahl der Zombies verringert werden.

Sie sollten Prozesse nicht im unterbrechungsfreien Schlaf beenden - normalerweise bedeutet dies, dass sie an E / A gebunden sind, aber IIRC kann auch während eines blockierenden Lesevorgangs von z. B. einem Netzwerk-Socket auftreten.

symcbean
quelle
10

Fehler im zugrunde liegenden Dateisystem oder auf Datenträgern können E / A-gebundene Prozesse verursachen. In diesem Fall versuchen Sie, das Dateisystem, von dem sie abhängig sind, zu "umount -f". Dies bricht alle ausstehenden E / A-Anforderungen ab, die dort offen sind.

Arie Skliarouk
quelle
2
Und Daten verlieren. Klingt nicht nach einer großartigen Idee.
Michael Hampton
5
Sie verlieren ohnehin Daten durch einen Neustart. Auf diese Weise vermeiden Sie möglicherweise einen Neustart - eine nützliche Funktion auf Produktions- oder Entwicklungssystemen.
Arie Skliarouk
2
Vielen Dank, dies funktionierte für ein Problem, bei dem ein Skript wochenlang nicht mehr auf ein verschwundenes NFS-Mount zugreifen konnte :)
BT643
1
Genau das passiert mir manchmal, wenn ich den lsBefehl auf einem s3fs-Mount ausführe. Der lsProzess wird nicht einmal mit töten, kill -9bis ich das Abmelden mit erzwinge umount -l. Alternativen zu umount?
Marco Marsala
2
Jetzt hängt mein Umount-Prozess als Zombie-STAT "D +"!
Curtis Yallop