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 ...
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.
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.
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 +"!
Antworten:
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 ...
quelle
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.
quelle
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.
quelle
ls
Befehl auf einem s3fs-Mount ausführe. Derls
Prozess wird nicht einmal mit töten,kill -9
bis ich das Abmelden mit erzwingeumount -l
. Alternativen zu umount?