Das Wort "Subreaper" wird in einigen Antworten verwendet. Bei der Google-Suche werden auch Einträge angezeigt, bei denen das Wort "nur verwendet" wird.
Wie kann ich verstehen, was ein "Subreaper" ist?
process
linux-kernel
process-management
Kenchew
quelle
quelle
Antworten:
Dies wurde im Linux-Kernel 3.4 als Flag des Systemaufrufs prctl () implementiert .
Aus der
prctl(2)
Manpage:Ein Prozess kann sich als Subreaper mit definieren
prctl(PR_SET_CHILD_SUBREAPER)
. Wenn ja, wird nichtinit
(PID 1) zum Elternteil verwaister Kindprozesse , sondern der nächste lebende Großelternteil, der als Subreaper markiert ist, wird zum neuen Elternteil. Wenn es keine lebenden Großeltern gibt,init
tut.Der Grund , diesen Mechanismus zu implementieren war , dass User - Space - Service - Manager / Supervisor (wie
upstart
,systemd
) müssen ihre Dienste gestartet verfolgen. Viele Dienste dämonisieren durch Double-Forking und werden implizit zu PID 1 umerzogen . Der Service-Manager kann dieSIGCHLD
Signale für sie nicht mehr empfangen und ist nicht mehr dafür verantwortlich, die Kinder mit zu erntenwait()
. Alle Informationen zu den untergeordneten Elementen gehen in dem Moment verloren, in dem PID 1 die übergeordneten Prozesse bereinigt. Ein Service Manager-Prozess kann sich jetzt als eine Art "Sub-Init" markieren und kann nun als übergeordneter Prozess für alle verwaisten Prozesse verwendet werden, die von den gestarteten Diensten erstellt wurden. AlleSIGCHLD
Signale werden an den Servicemanager gesendet.Unter Linux wird ein Daemon normalerweise durch zweimaliges Verzweigen erstellt, wobei der Zwischenprozess nach dem Verzweigen des Enkelkinds beendet wird. Dies ist eine übliche Technik, um Zombieprozesse zu vermeiden . Das Init-Skript ruft ein Kind auf. Das Kind gabelt sich wieder und geht sofort wieder. Das Enkelkind wird von adoptiert
init
, das ständigwait()
den Ausreisestatus seiner Kinder abfragt, um Zombies auszuweichen. Mit dem Konzept der Subreaper wird der Userspace-Service-Manager jetzt zum neuen übergeordneten Elementinit
.quelle