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

Warum kann ich diesen Prozess unter Linux nicht beenden?

Um Frage Nummer 1 zu beantworten:

Wenn ein Prozess untergeordnete Prozesse hervorbringt, haben die untergeordneten Prozesse jeweils ihre eigene PID. Die PPID jedes Kindes (Prozess-ID des Elternteils) ist die PID ihres Elternprozesses. Wenn der Elternprozess stirbt, sind die Kindprozesse verwaist. Verwaiste Prozesse werden automatisch vom System-Init-Prozess aufgenommen, der eine PID von 1 hat.


Problem

Ihr Skript erstellt wahrscheinlich Zombies wegen deinem kill -9 Befehle; Wie auch von jjlin answer vorgeschlagen, ist es niemals eine gute Praxis, einen Prozess abrupt zu beenden, ohne dazu gezwungen zu werden.

Ab man bash wir können lesen:

Prozesse, die mit gekennzeichnet sind, sind tote Prozesse (sogenannte "Zombies "), die übrig bleiben, weil ihr übergeordnetes Element sie nicht ordnungsgemäß zerstört hat .Diese Prozesse werden durch init(8) zerstört wenn der übergeordnete Prozess beendet wird.

Antwort 1: Der Prozess init hat die PID 1 und dafür weist Linux ihnen den Elternteil mit PID 1 zu (weil es sie init zuweist ).

Antwort Nr. 2: Sie können nicht einfach getötet werden weil sie einfach tot sind ... wenn ihr Elternteil init ist Wahrscheinlich reicht es, einige Zeit zu warten.

Um Zombies aus einem System zu entfernen, kann das SIGCHLD-Signal manuell mit dem Kill-Befehl an das übergeordnete System gesendet werden. Wenn sich der Elternprozess immer noch weigert, den Zombie zu ernten, wäre der nächste Schritt, den Elternprozess zu entfernen. Wenn ein Prozess seinen Elternprozess verliert, wird init zu seinem neuen Elternprozess. Init führt regelmäßig den Wait-Systemaufruf aus, um alle Zombies mit init als Eltern zu ernten. [1]

Falls diese Idee eines Tages auftaucht:bis #kill -9 init Prozess mit Root-Rechten ist das Software-Äquivalent zum physischen Trennen des Computers vom Stromnetz. [:-)]

Allerdings Zombie-Prozesse kann in der Ausgabe von ps identifiziert werden Befehl durch das Vorhandensein eines "Z" in der STAT Säule. Sie können die folgende Zeile verwenden, um sie leicht zu identifizieren

ps -aux | grep Z

Einige Referenzen zur Linux-Zombies-Welt :

  • Gibt es eine Möglichkeit, einen Zombie-Prozess ohne Neustart zu beenden?
  • Was sind Zombie-Prozesse
  • Wie man den Zombie-Prozess beendet
  • [1] Aus vielen Quellen im Netz

Linux
  1. Wie beendet man einen Prozess unter Linux mit dem Befehl?

  2. kill-Befehlsbeispiele in Linux

  3. Linux-Skript zum Beenden des Java-Prozesses

  4. Linux, warum kann ich find result nicht an rm weiterleiten?

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

Wie beendet man einen Prozess in Linux? Befehle zum Beenden

So beenden Sie einen Prozess in Linux

Kill-Befehl unter Linux

So beenden Sie Zombie-Prozesse in Linux

5 schnelle Möglichkeiten, einen Prozess in Linux zu beenden

Wie man einen Prozess unter Linux beendet