Session
bezieht sich normalerweise auf Shell-Sitzungen. Eine Shell ermöglicht Ihnen die Interaktion mit dem Computer. Es fungiert als Brücke zwischen dem Benutzer und dem Kernel. Wann immer Sie einen Befehl ausführen, ist es die Shell, die Ihre Absicht erfasst und dem Kernel sagt, dass er seine Sache tun soll.
In den meisten Linux-Varianten ist die Standard-Shell bash
und ein neues bash
Die Sitzung wird jedes Mal gestartet, wenn Sie ein neues Terminal öffnen. In der Ausgabe von w
Sie haben gepostet, Sie scheinen Ihre grafische Anmeldesitzung zu haben (sieht aus, als würden Sie von der Maschine aus sshen):
argento :0 18set13 ?xdm? 2days 1.58s gdm-session-worker [pam/gdm-password]
Ein paar Emulatoren für offene Terminals:
argento pts/0 18set13 29:26m 5:26 5:26 rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento pts/1 18set13 9days 0.16s 0.16s /bin/bash
argento pts/2 lun10 5.00s 0.09s 7.55s /usr/bin/python /usr/bin/terminator
argento pts/3 14:40 33:41 0.09s 0.03s vim notes.txt
argento pts/4 gio12 26:04m 0.10s 7.55s /usr/bin/python /usr/bin/terminator
argento pts/5 14:56 17:33 0.11s 0.11s /bin/bash
Und Sie scheinen sich auch von einem nicht grafischen tty eingeloggt zu haben:
argento tty2 15:11 1:01 0.09s 0.09s -bash
Jede davon ist eine separate Instanz Ihrer Shell und zählt als eigene Sitzung.
1. Obwohl sich Benutzer bei einem einzelnen Prozess anmelden (Shell, die ihre Befehlszeilenschnittstelle ist), führen Benutzer am Ende viele Prozesse als Ergebnis von Aktionen aus wie:
-> Nicht interaktive Aufgabe im Hintergrund ausführen.
-> Umschalten zwischen interaktiven Tasks über die Jobsteuerung.
-> Mehrere Prozesse starten, die über Pipes zusammenarbeiten.
-> Laufendes Fenstersystem wie das X-Window-System, das das Öffnen mehrerer Terminalfenster ermöglicht.
2. Um all diese Prozesse zu handhaben, muss der Kernel Prozessgruppen bilden, die aus diesen Prozessen bestehen.
3. Um diese Prozessgruppen weiter nach Benutzern zu verwalten, werden diese Gruppen nach Benutzern in Sitzungen unterteilt. (Beachten Sie, dass Benutzer nicht Linux-Benutzer ist, sondern Shell oder Terminal für Benutzer steht. Zwei Terminals auf derselben Maschine, die von demselben Linux-Benutzer angemeldet sind steht hier für 2 verschiedene Benutzer und somit 2 verschiedene Benutzersitzungen. Ein Terminal kann das Terminal nur für eine einzelne Sitzung steuern).
Der Prozess, der die Shell für diesen „Benutzer“ oder diese Sitzung ausführt, wird als Sitzungsleiter bezeichnet.
4. Beachten Sie auch, dass Sie das Terminal schließen, indem Sie die Taste „x“ drücken, um dieses Terminal nicht zu verlassen. Dieses Terminal läuft im Hintergrund weiter. Wenn Sie die Sitzung vom Terminal aus fortsetzen möchten, müssen Sie sich von dort abmelden, indem Sie STRG+D drücken oder beenden.
5. Wenn Sie sich vom Terminal abmelden, sendet der Kernel ein SIGHUP-Signal (ähnlich wie kill -1) an den Prozess, der der Sitzungsleiter ist. Jetzt ist jeder andere Prozess, der im Terminal läuft, ein Kind dieses Sitzungsleiters. Diese untergeordneten Prozesse hatten Prozessgruppen gebildet, die von diesem Sitzungsleiterprozess (Elternprozess) gesteuert werden.
6. Der Sitzungsleiterprozess sendet SIGHUP an jeden untergeordneten Prozess, einige Prozesse werden beendet, während andere sich dafür entscheiden können, nicht zu beenden (diejenigen, die angehalten oder im Hintergrund ausgeführt werden). Diejenigen, die sich dafür entscheiden, nicht zu beenden, werden bei Sitzungsübergängen verwaist und sofort vom Init-Prozess übernommen (Elternprozess aller Prozesse auf der Linux-Maschine).
Weitere Informationen finden Sie unter Link Das Prozessmodell der Linux-Entwicklung
Ich denke, dass jede Terminalsitzung eine Benutzersitzung ist. Sie können mehr als ein Terminal unter X haben und das sind virtuelle Terminals, oder Sie können ein echtes Terminal unter der Konsole haben. Das sind alles Sessions. Das ist mein 'w'
$ w
15:14:13 up 9 days, 6:02, 8 users, load average: 1,03, 1,19, 1,31
USER TTY [email protected] IDLE JCPU PCPU WHAT
argento :0 18set13 ?xdm? 2days 1.58s gdm-session-worker [pam/gdm-password]
argento pts/0 18set13 29:26m 5:26 5:26 rdesktop -g 1200x700 -u administrator -p XXXXXXXXX -d DOMAIN -K srv-wsus
argento pts/1 18set13 9days 0.16s 0.16s /bin/bash
argento pts/2 lun10 5.00s 0.09s 7.55s /usr/bin/python /usr/bin/terminator
argento pts/3 14:40 33:41 0.09s 0.03s vim notes.txt
argento pts/4 gio12 26:04m 0.10s 7.55s /usr/bin/python /usr/bin/terminator
argento pts/5 14:56 17:33 0.11s 0.11s /bin/bash
argento tty2 15:11 1:01 0.09s 0.09s -bash
Die zweite Spalte zeigt das tty, wie Sie sehen können, sind pts xterm (virtuelles Terminal), das andere (tty2) ist ein Konsolen-Login.