Heim >Computer-Tutorials >Computerwissen >So beenden Sie Zombie-Prozesse unter Linux ordnungsgemäß

So beenden Sie Zombie-Prozesse unter Linux ordnungsgemäß

WBOY
WBOYnach vorne
2024-02-19 10:40:23535Durchsuche

So beenden Sie Zombie-Prozesse unter Linux ordnungsgemäß

In Linux-Systemen sind Zombie-Prozesse spezielle Prozesse, die beendet wurden, aber noch im System verbleiben. Obwohl Zombie-Prozesse nicht viele Ressourcen verbrauchen, können sie bei zu vielen Ressourcen zur Erschöpfung der Systemressourcen führen. In diesem Artikel erfahren Sie, wie Sie Zombie-Prozesse korrekt entfernen, um den normalen Betrieb des Systems sicherzustellen.

1 Linux-Zombie-Prozess

Nachdem der untergeordnete Prozess die Aufgabe abgeschlossen hat und der übergeordnete Prozess den Status nicht rechtzeitig überprüft, wird der untergeordnete Prozess zu einem Zombie-Prozess. Der untergeordnete Prozess wartet auf die Bestätigung des übergeordneten Prozesses und das System wird ihn erst wiederverwenden, wenn er abgeschlossen ist. Andernfalls bleibt der Zombie-Prozess weiterhin im System hängen.

Um zu überprüfen, ob Zombie-Prozesse im System vorhanden sind, können Sie den Befehl top ausführen, um alle laufenden Prozesse und mögliche Zombie-Prozesse anzuzeigen.

Ergebnis des „Top“-Befehls

Auf dem Bild oben können Sie die PID-Nummer des Prozesses unter Linux sehen, und Sie können auch in der oberen rechten Ecke sehen, dass es keine Zombie-Prozesse im System gibt.

Sind Zombie-Prozesse schädlich für das System?

Der Zombie-Prozess selbst schadet dem Linux-System nicht, aber wenn es zu viele Zombie-Prozesse gibt, kann es zu kleineren Problemen kommen.

Ein Zombie-Prozess ist ein Prozess, der seine Aufgabe abgeschlossen hat und auf die Verarbeitung durch seinen übergeordneten Prozess wartet. Wenn zu viele Zombie-Prozesse vorhanden sind, kann dies zu Systemproblemen führen.

Wenn sich Zombie-Prozesse zu stark anhäufen, kann die Systemleistung sinken. Daher ist es sehr wichtig, diese Probleme rechtzeitig zu überprüfen und zu lösen. Normalerweise liegt die Verantwortung für die Bereinigung von Zombie-Prozessen bei ihren übergeordneten Prozessen. Wenn der übergeordnete Prozess Zombie-Prozesse nicht korrekt verarbeitet, kann dies zu einer Verschwendung von Systemressourcen führen. Daher können durch eine zeitnahe Überprüfung und Anpassung der Verarbeitungsmethode des übergeordneten Prozesses die negativen Auswirkungen von Zombie-Prozessen auf das System wirksam vermieden werden.

2 Zombie-Prozess eliminieren

Um Zombie-Prozesse zu eliminieren, müssen wir einige Befehle lernen, die uns helfen, diese Prozesse zu identifizieren.

Der erste zu überprüfende Befehl ist ps. Der Befehl ps zeigt die aktiven Prozesse an, die unter Linux ausgeführt werden.

Wenn Sie jedoch nur den Befehl ps ausführen, werden nicht viele nützliche Informationen angezeigt. Daher müssen einige weitere Flags hinzugefügt werden, um die gewünschten Informationen zu erhalten.

ps aux

a: Prozesse aller Benutzer anzeigen. u: Zeigt den Benutzer/Eigentümer des Prozesses an. x: Prozesse anzeigen, die nicht mit dem Terminal verbunden sind.

Bilder

Prozesse unter Linux

Wie in den obigen Ergebnissen gezeigt, gibt es zwei Zombie-Prozesse im System. (Ihr STAT wird als Z angezeigt)

Da es unser Ziel ist, Zombie-Prozesse zu finden, müssen wir die Prozesse mit Status Z (d. h. Zombie-Prozesse) herausfiltern, anstatt alle laufenden Prozesse anzuzeigen. Dies kann mit dem grep-Befehl erreicht werden.

ps aux | grep "Z"

Dadurch werden alle Zombie-Prozesse im System mit Ausnahme anderer Prozesse herausgefiltert.

Hinweis: Wenn im System keine Zombie-Prozesse vorhanden sind und Sie diesen Artikel weiter lesen möchten, können Sie den folgenden Befehl ausführen, um welche zu erstellen:

(sleep 1 & exec /bin/sleep 999) &

Wenn Sie den Befehl ps aux |. grep „Z“ ausführen, werden alle Prozesse angezeigt, die den Buchstaben „Z“ enthalten, einschließlich des Befehls grep selbst. Dies liegt daran, dass der grep-Befehl ebenfalls ein Prozess ist und seine Aufgabe darin besteht, Prozesse zu finden, die „Z“ enthalten, sodass er auch selbst durchsucht wird. Um dieses Problem zu vermeiden, müssen Sie daher eine weitere Pipe grep -v grep hinzufügen, damit Sie die vom grep-Befehl selbst generierten Prozesse ausschließen und nur die echten Zombie-Prozesse anzeigen können.

Um den Zombie-Prozess jetzt zu beenden, sind einige komplizierte Vorgänge erforderlich, da der Zombie-Prozess nicht direkt beendet werden kann, sondern zuerst sein übergeordneter Prozess beendet werden muss und dann der Zombie-Prozess beendet werden kann. Dies liegt daran, dass Zombie-Prozesse von ihren übergeordneten Prozessen erstellt werden und Zombie-Prozesse vom System erst recycelt werden können, wenn der übergeordnete Prozess ihre Ressourcen freigibt.

Zuerst müssen Sie den übergeordneten Prozess finden, was mit dem folgenden einfachen Befehl erreicht werden kann:

ps -o ppid= -p [僵尸进程 PID]

(Zombie-Prozess-PID durch tatsächliche PID-Nummer ersetzen)

Dadurch wird die PID des übergeordneten Prozesses des Zombie-Prozesses angezeigt und diese PID wird dann verwendet, um den übergeordneten Prozess zu beenden.

Das Beenden von Prozessen unter Linux ist einfach. Verwenden Sie dazu den Kill-Befehl:

ps aux | grep 'Z' | grep -v grep

Hier werden die Ergebnisse aller Prozesse angezeigt, die Zombies sind. Wir erhalten ihre PID-Nummern und verwenden dann den Befehl ps -o ppid= -p [Zombie-Prozess-PID], um die PID des übergeordneten Prozesses des Zombie-Prozesses zu ermitteln, damit wir ihn beenden können.

Bilder

Finden Sie die PID des übergeordneten Prozesses

Im Beispiel gibt es drei Zombie-Prozesse mit den PIDs 109, 117 und 119. Hier finden wir den übergeordneten Prozess des Zombie-Prozesses 109.

ps -o ppid= -p 109

Das Ergebnis ist sehr einfach. Im Beispiel wird nur die PID-Nummer angezeigt: 108

Um den Prozess abzubrechen, verwenden Sie einfach den Kill-Befehl:

kill 108

Zu diesem Zeitpunkt wurde der übergeordnete Prozess des Zombie-Prozesses 109 beendet.

Hinweis: Das Beenden des übergeordneten Prozesses kann Nebenwirkungen auf das System oder andere Anwendungen haben und sollte mit Vorsicht durchgeführt werden. Normalerweise sollte das Beenden des übergeordneten Prozesses als letzter Ausweg erfolgen und es ist am besten, nicht darüber nachzudenken, den übergeordneten Prozess zu beenden, bis Sie andere Lösungen ausprobiert haben.

Im Beispiel haben wir den Prozess beendet, den wir zu Testzwecken selbst erstellt haben. Das ist also in Ordnung, aber wenn Sie sich tatsächlich dazu entschließen, einen übergeordneten Prozess zu beenden, müssen Sie verstehen, was Sie tun. Suchen Sie zunächst den übergeordneten Prozess, überprüfen Sie, was er tut und was er tut, und stellen Sie dann sicher, dass Sie nichts kaputt machen, indem Sie ihn beenden. Schließlich können Sie es mit dem obigen Befehl beenden.

Durch die Lektüre dieses Artikels hoffe ich, dass die Leser verstehen können, dass Zombie-Prozesse nicht so schrecklich sind, auch wenn sie einige Probleme verursachen können, insbesondere wenn Zombie-Prozesse anfangen, überfüllt zu sein. Ich hoffe, dass die Leser einige Waffen/Befehle beherrschen, wie z ps aux |. grep „Z“, um Zombie-Prozesse zu finden und Wege zu finden, sie und ihre übergeordneten Prozesse zu töten, ohne das System zu beschädigen.

Das obige ist der detaillierte Inhalt vonSo beenden Sie Zombie-Prozesse unter Linux ordnungsgemäß. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:mryunwei.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen