Was bedeutet <defunct> für die Ausgabe von ps?


15

Ich hatte den ps -ef|grep javaBefehl erteilt und dies ist einer der Einträge, die ich erhalten habe:

subhrcho   875   803  0 Jan23 pts/5    00:02:27 [java] <defunct>

Was <defunct>bedeutet das hier? In welchem ​​Zustand befindet sich dieser Prozess mit PID = 875?

Antworten:


16

Aus der PS-Manpage :

Markierte Prozesse <defunct>sind tote Prozesse (sogenannte "Zombies"), die verbleiben, weil ihre Eltern sie nicht richtig zerstört haben. Diese Prozesse werden von init (8) zerstört, wenn der übergeordnete Prozess beendet wird.


Was ist der Vertrag zwischen einem übergeordneten Prozess und einem untergeordneten Prozess zur Zerstörung des untergeordneten Prozesses? Ich dachte, es ist die Pflicht des Kindprozesses, dem Elternteil mitzuteilen, dass es zerstört wird?
Geek

@Geek Der Kernel zerstört den untergeordneten Prozess und benachrichtigt den übergeordneten. Das Kind ruft nur _exitein Signal an oder stirbt daran. Wenn der Kernel einen Prozess zerstört, bleibt nur ein Eintrag in der Prozesstabelle übrig, der verschwindet, wenn der übergeordnete (oder Prozess 1 für verwaiste) Benutzer aufruft wait.
Gilles 'SO- hör auf böse zu sein'

2
@Giles Was bedeutet es, wenn auf der Manpage steht, dass Eltern den untergeordneten Prozess nicht ordnungsgemäß zerstört haben? Eltern haben nicht angerufen warten?
Geek
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.