GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So beenden Sie einen <defunct>-Prozess mit übergeordnetem 1

Lösung 1:

Die einzige Möglichkeit, den Zombie-Prozess zu entfernen, wäre, den übergeordneten Prozess zu töten. Da das übergeordnete Element init (PID 1) ist, würde dies auch Ihr System herunterfahren.

Dies lässt Ihnen so ziemlich zwei Möglichkeiten.

  • Ändern Sie die Prozesstabelle manuell, z. Erstellen Sie einen Dummy-Prozess, verknüpfen Sie den nicht mehr existierenden Prozess als Kind des Dummys und beenden Sie ihn dann. Ziemlich gefährlich, und Sie müssen möglicherweise andere Prozessressourcen wie Semaphore und Dateihandles manuell bereinigen.
  • Starten Sie das System neu.

Ich würde mit dem zweiten gehen.

Lösung 2:

Überprüfen Sie, ob eine Kernel-Panic aufgetreten ist,

# dmesg |tail

Überprüfen Sie, ob sich der Prozess im "D" Unkillable-Schlaf befindet, wo er im Kernel-Modus für einen Systemaufruf ist, der noch nicht zurückgekehrt ist (entweder Kernel-Oops oder aus einem anderen Grund)http://www.nabble.com/What-causes-an -unkillable-process--td20645581.html

Lösung 3:

Sie könnten versuchen, init neu zu starten:

 # telinit u

Ansonsten würde ich mir keine großen Gedanken machen. Es läuft nicht und nimmt keine Ressourcen in Anspruch und es ist nur da, damit der Kernel sich daran erinnern kann.

Lösung 4:

Wenn ein Zombie init als übergeordnetes Element hat, funktioniert init nicht mehr richtig. Eine der Aufgaben von init ist es, Zombies zu beseitigen. Wenn es das nicht tut, tut es niemand anderes. Die einzige Lösung ist also ein Neustart. Wenn Init kaputt ist, kann ein Neustart fehlschlagen, also würde ich wichtige Dienste herunterfahren, das Dateisystem synchronisieren und dann stattdessen den Netzschalter drücken.

Lösung 5:

Lassen Sie uns die Panik unterdrücken, sollen wir? Ein „nicht mehr existierender“ oder „Zombie“-Prozess ist kein Prozess . Es ist einfach ein Eintrag in der Prozesstabelle mit einem gespeicherten Beendigungscode. Somit hält ein Zombie keine Ressourcen, benötigt keine CPU-Zyklen und verwendet keinen Speicher, da es kein Prozess ist . Werden Sie nicht ganz komisch und juckend, wenn Sie versuchen, Zombie-Prozesse zu "töten". Genau wie ihre Namensvetter können sie nicht getötet werden, da sie bereits tot sind. Aber anders als die gehirnfressende Art, schaden sie absolut niemandem und werden andere Prozesse nicht beißen.

Lassen Sie nicht zu, dass Zombie-Prozesse Ihr Gehirn fressen. Ignoriere sie einfach.


Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. Wie beendet man einen Prozess, dessen Eltern Init ist?

  3. Wie kann man alle Prozesse mit einem bestimmten Teilnamen beenden?

  4. Wie kann man einen mit subprocess.check_output() erstellten Python-Kindprozess beenden, wenn der Elternteil stirbt?

  5. Wie man einen Prozess unter Linux anhält/fortsetzt

So beenden Sie einen Prozess in Linux

So beenden Sie Zombie-Prozesse in Linux

So finden und beenden Sie einen Prozess mit einem Linux-Terminal

So beenden Sie den laufenden Linux-Prozess auf einem bestimmten Port

Wie man einen Prozess unter Linux beendet

So töten Sie Zombie-Prozesse in Ubuntu