Was sind Sitzungsleiter, bei ps -d
denen alle Prozesse außer den Sitzungsleitern ausgewählt werden?
Unter Linux sind jedem Prozess mehrere IDs zugeordnet, darunter:
Prozess-ID (PID)
Dies ist eine beliebige Nummer, die den Prozess identifiziert. Jeder Prozess hat eine eindeutige ID. Nachdem der Prozess beendet wurde und der übergeordnete Prozess den Beendigungsstatus abgerufen hat, wird die Prozess-ID für die Wiederverwendung durch einen neuen Prozess freigegeben.
Übergeordnete Prozess-ID (PPID)
Dies ist nur die PID des Prozesses, der den betreffenden Prozess gestartet hat.
Prozessgruppen-ID (PGID)
Dies ist nur die PID des Prozessgruppenleiters. Wenn PID == PGID, dann ist dieser Prozess ein Prozessgruppenleiter.
Sitzungs-ID (SID)
Dies ist nur die PID des Sitzungsleiters. Wenn PID == SID, dann ist dieser Prozess ein Sitzungsleiter.
Sitzungen und Prozessgruppen sind nur Möglichkeiten, eine Reihe von verwandten Prozessen als Einheit zu behandeln. Alle Mitglieder einer Prozessgruppe gehören immer zu derselben Sitzung, eine Sitzung kann jedoch mehrere Prozessgruppen enthalten.
Normalerweise ist eine Shell ein Sitzungsleiter, und jede von dieser Shell ausgeführte Pipeline ist eine Prozessgruppe. Dies soll es einfach machen, die Kinder einer Muschel zu töten, wenn sie herauskommt. (Siehe Ausgang (3) für die Details.)
Ich glaube nicht, dass es einen speziellen Begriff für ein Mitglied einer Sitzung oder Prozessgruppe gibt, das nicht der Anführer ist.
ps xao pid,ppid,pgid,sid,comm
diese Option, um diese IDs anzuzeigen.Ein Sitzungsleiter ist ein Prozess, bei dem die Sitzungs-ID == die Prozess-ID ist. Das klingt erfunden, aber die Sitzungs-ID wird von untergeordneten Prozessen geerbt. Einige Operationen in UNIX / Linux werden in Prozesssitzungen ausgeführt, z. B. das Negieren der Prozess-ID, wenn sie an den Systemaufruf oder Befehl kill gesendet werden. Die häufigste Verwendung hierfür ist das Abmelden von einer Shell. Das Betriebssystem
kill -HUP -$$
sendet ein SIGHUP-Signal (Auflegen) an alle Prozesse mit derselben Sitzungs-ID wie die Shell. Wenn Sie einen Prozess ablehnen, wird die Sitzungs-ID des Prozesses von der Shell aus geändert, sodass er nicht auf das Aufhängesignal reagiert. Dies ist ein Teil des Prozesses, um ein Daemon-Prozess zu werden.Die meisten Prozesse, die vom Fenstermanager / der grafischen Umgebung aufgerufen werden, haben dieselbe Sitzungs-ID wie eines der Startprogramme. Auf diese Weise kann das
kill -HUP -$$
Betriebssystem für alle Programme den gleichen Vorgang ausführen : z. B. für Ihren Browser, Musik-Player, Libreoffice, IM-Client usw. Dies sind die Prozesse, die keine Sitzungsleiter sind.quelle
Ich dachte, ich wüsste die Antwort darauf, aber ich habe ein C-Programm geschrieben, um das herauszufinden.
Ich habe es mit
cc -g -o sid sid.c
ein paar verschiedenen Methoden kompiliert , um zu sehen, was passiert:Ich war ein bisschen überrascht von dem, was Linux (2.6.39) zurückgegeben hat. Ich habe auch die Manpage "credentials" in Abschnitt 7 gefunden.
Mein Rat ist, dies zu tun
man 7 credentials
(oder das Äquivalent, wenn nicht unter Linux) und den Abschnitt über Prozessgruppen und Sitzungen zu lesen, um zu sehen, ob Sie es herausfinden können.quelle
./sid
undnohup ./sid
, wenn Sie ausgeführt werdensetsid ./sid
, ist die Sitzungs-ID (SID) brandneu und entspricht der Prozess-PID ... I ' Ich bin mir nicht sicher, warum Nohup die Gabelung verhindert hat (oder zu verhindern scheint), aber ich glaube, ich habe die allgemeine Idee ...