Linux lernen

So töten Sie Zombie-Prozesse in Linux

So töten Sie Zombie-Prozesse in Linux

Ein Zombie-Prozess in Linux bezieht sich auf diese bereits toten Prozesse, die aber auf die eine oder andere Weise noch in der Prozesstabelle des Systems vorhanden sind. Die Lücke besteht darin, dass dieser Prozess aus irgendeinem Grund nicht vom übergeordneten Element aus der Prozesstabelle entfernt wurde. Normalerweise geschieht dies nach Abschluss des Ausführungsprozesses.

Die übliche Vorgehensweise in Linux besteht darin, dass ein Prozess, nachdem er seine Ausführung abgeschlossen hat, seinen übergeordneten Prozess benachrichtigt, der für das Entfernen des Prozesses aus der Tabelle verantwortlich ist. Leider können die Eltern den Prozess nicht aus dem Speicher entfernen, wenn die Eltern den Status des Kindes nicht lesen können. So kommt es, dass wir tote Prozesse in der Prozesstabelle haben. Dies sind die sogenannten Zombie-Prozesse.

Was verursacht Linux-Zombie-Prozesse??

Wenn der untergeordnete Prozess erstellt wird, kann ein schlecht geschriebener übergeordneter Prozess möglicherweise die wait()-Funktion nicht aufrufen. Infolgedessen werden seine Zombie-Kinder in Erinnerung bleiben, bis sie ausgelöscht werden.

Dies bedeutet, dass nichts den Säuglingsprozess auf Zustandsänderungen überwacht und das SIGCHLD-Signal ignoriert wird. Vielleicht stört eine andere Anwendung die Ausführung des übergeordneten Prozesses, entweder durch lausige Programmierung oder böswillige Absicht.

Die ordnungsgemäße Systemverwaltung erfolgt nicht, wenn der übergeordnete Prozess nicht auf Zustandsänderungen im untergeordneten Prozess achtet.

Wenn der Säuglingsprozess abgeschlossen ist, werden die Leiterplatte und der Eintrag in der Prozesstabelle nicht entfernt. Der Zombie-Zustand wird dadurch nie von der Platine entfernt.

Zombies haben zwar etwas Gedächtnis, aber normalerweise ist das kein Problem. Da Linux-Systeme eine endliche Anzahl von PIDs haben (wenn auch eine große Anzahl), kann kein anderer Prozess gestartet werden, wenn genügend PIDs zombiert werden. Es ist zweifelhaft, dass das passieren wird.

Zombie-Prozesse deuten jedoch darauf hin, dass mit einer Anwendung etwas schief gelaufen ist und ein bestimmtes Programm möglicherweise einen Fehler aufweist.
Softwarefehler in Rechenzentren sollten nicht toleriert werden und müssen behoben werden.
Sie sollten nach Zombie-Prozessen Ausschau halten und diese zerstören, bis der Fehler behoben ist.

Die Prozess-ID kann erst nach dem Start wiederverwendet werden, daher ist der Eintrag in der Prozesstabelle winzig.
Da die Leiterplatte in einem 64-Bit-Betriebssystem viel größer ist als der Prozesstabelleneintrag, ist dies unwahrscheinlich, dass es zu Problemen kommt.

Der für andere Prozesse verfügbare Speicher könnte durch eine große Anzahl von Zombies beeinträchtigt werden. Wenn Sie jedoch so viele Zombies haben, haben Sie ein schwerwiegendes Problem mit der übergeordneten Anwendung oder einen Fehler im Betriebssystem.

Also, was tun Sie, wenn eine Prozedur zu einem Zombie wird?? Sie spüren die Zombie-Prozesse auf und beseitigen sie.

So finden Sie einen Zombie-Prozess?

Der erste Stopp beim Töten eines Zombie-Prozesses im System besteht darin, ihn zuerst zu identifizieren. Da der Init-Prozess regelmäßig nach Zombies aufräumt, müssen Sie nur den Prozess zerstören, der sie erstellt hat, um sie loszuwerden.

Der oberste Befehl ist eine schnelle Möglichkeit, um zu sehen, ob sich Zombies in Ihrer Nähe befinden. Um dies zu erreichen, führen wir den folgenden Befehl aus.

oben

Top-Befehlsergebnisse

Die Anzahl der Zombie-Prozesse in diesem System wird auf der Ausgabe angezeigt. In unserem obigen Fall haben wir 0 Zombies.
Mit dem ps-Befehl und dem Pipettieren in egrep können wir eine Liste davon erhalten. Die Statusflagge für Zombie-Prozesse ist „Z“, und manchmal wird auch „verstorben“ angezeigt.

tuts@fosslinux:~$ ps aux | egrep "Z|verstorben"

Das Statusflag für Zombie-Prozesse ist Z oder veraltet

Lassen Sie uns die verschiedenen Abschnitte dieses Befehls aufschlüsseln.

Z in der Spalte STAT der Ausgabe identifiziert einen Zombie-Prozess.
[defunct] in der letzten Spalte (COMMAND) der Ausgabe identifiziert auch einen Zombie-Prozess.

Im Idealfall ist es nicht möglich, einen Zombie-Prozess zu beenden, da er tot ist. Stattdessen benachrichtigen wir die Eltern, zu versuchen, den Prozessstatus des Kindes zu lesen und es schließlich aus der Systemtabelle zu entfernen. Um diesen Prozess auszulösen, senden wir ein SIGCHLD-Signal an die Eltern des Prozesses. Um die ID des übergeordneten Prozesses oder die sogenannte PID zu identifizieren, müssen Sie den folgenden Befehl ausführen:

tuts@fosslinux:~$ ps -o ppid= 

Identifizieren der übergeordneten Prozess-ID

Nachdem Sie die PID des Zombies erhalten haben, verwenden Sie das Befehlssignal SIGCHLD für die zuvor identifizierten übergeordneten Prozesse.

tuts@fosslinux:~$ kill -s SIGCHLD 

Verwenden Sie den Befehl SIGCHLD-Signal

In einigen Fällen klärt dies den Zombie-Prozess nicht. Dies ruft uns dazu auf, uns an Plan b oder c zu beteiligen. Die vorherige beinhaltet das Neustarten des übergeordneten Prozesses oder das Beenden der übergeordneten Prozesse. Auf der anderen Seite beinhalten die letzteren Fälle einen Systemneustart, insbesondere wenn der Zombie-Prozess aufgrund des Zombie-Prozesses einen Ausfall oder einen massiven Anstieg verursachen könnte.

Unten ist der Befehl zum Beenden des übergeordneten Prozesses.

tuts@fosslinux:~$ kill -9 

Befehl zum Beenden des übergeordneten Prozesses

Falls ein übergeordneter Prozess beendet wird, werden auch alle untergeordneten Prozesse des angegebenen übergeordneten Prozesses getötet. Falls einer der untergeordneten Prozesse zu einem bestimmten Zeitpunkt kritisch ist, müssen Sie das Töten möglicherweise verschieben, bis es sicher ist. Auf der anderen Seite kann Ihnen eine schnelle Überprüfung sagen, wie viel Speicher oder Rechenleistung die Zombie-Prozesse verbrauchen. Dies hilft festzustellen, ob es die bessere Option ist, den übergeordneten Prozessor zu beenden, um einen Neustart des Systems im nächsten Zyklus der bereits geplanten Systemwartung durchzuführen.

Wie funktionieren Prozesszustände unter Linux??

Natürlich muss Linux alle Anwendungen und Daemons verfolgen, die auf Ihrem Computer ausgeführt werden. Die Pflege der Prozesstabelle ist eine der Möglichkeiten, dies zu erreichen.
Dies ist eine Liste von Kernel-Speicherstrukturen. Diese Liste enthält einen Eintrag für jeden Prozess, der einige Informationen darüber enthält. Jede der Prozesstabellenstrukturen enthält sehr wenige Informationen.

Sie speichern die Prozess-ID, einige andere Informationen und einen Zeiger auf den Prozesssteuerungsblock (PCB).

Auf der Platine speichert Linux alle Informationen, die es zum Nachschlagen oder Einstellen für jeden Prozess benötigt or. Wenn ein Prozess erstellt wird, wird er modifiziert, mit Verarbeitungszeit versehen und dann zerstört.

Es gibt über 95 Felder auf der Linux-Platine. Es ist in der Aufgabenstruktur definiert, die über 700 Zeilen lang ist. Die folgenden Arten von Informationen finden Sie auf der Platine:

Die Zustände des Prozesses sind unten dargestellt

Jeder der folgenden kann der „Prozessstatus“ sein:

Fazit

Wenn sie nicht Teil einer riesigen Horde sind, sind Zombies nicht so schädlich. Ein paar sind keine große Sache, und ein schneller Neustart wird sie beseitigen. Es gibt jedoch einen Punkt zu beachten.

Linux-Architekturen haben eine maximale Anzahl von Prozessen und damit eine maximale Anzahl von Prozess-ID-Nummern. Wenn die maximale Anzahl von Zombie-Prozessen eines Computers erreicht ist, können keine neuen Prozesse gestartet werden.

Zombie-Prozesse sind keine Prozesse; Sie sind die Überreste toter Prozesse, die ihr übergeordneter Prozess nicht richtig bereinigt hat. Wenn Sie jedoch feststellen, dass eine bestimmte Anwendung oder ein bestimmter Prozess ständig Zombies hervorbringt, sollten Sie weiter nachforschen.

Höchstwahrscheinlich ist es nur ein schlecht geschriebenes Programm; in diesem Fall gibt es vielleicht eine aktualisierte Version, die nach ihren untergeordneten Prozessen ordnungsgemäß bereinigt.

Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...
So ändern Sie die linke und rechte Maustaste auf einem Windows 10-PC
Es ist ganz normal, dass alle Computer-Maus-Geräte ergonomisch für Rechtshänder gestaltet sind. Es gibt aber auch Mausgeräte, die speziell für Linkshä...
Emulieren Sie Mausklicks, indem Sie den Mauszeiger mit der klicklosen Maus in Windows 10 bewegen
Die Verwendung einer Maus oder Tastatur in der falschen Haltung bei übermäßiger Nutzung kann zu vielen gesundheitlichen Problemen führen, einschließli...