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

Was ist die Definition einer Sitzung unter Linux?

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.


Linux
  1. Was Linux zum nachhaltigen Betriebssystem macht

  2. Was macht die Linux-Community besonders?

  3. Linux vs. Unix:Was ist der Unterschied?

  4. Wie stoppe ich einen Bildschirmprozess unter Linux?

  5. Was ist die aktuelle Linux-Kernelquelle?

Was ist der Linux-Überwachungsbefehl + Beispiele

Was ist die Shell unter Linux?

SIGTERM vs. SIGKILL:Was ist der Unterschied?

Was ist der Kill-Befehl in Linux?

Was ist die Linux-Prozesstabelle? Woraus besteht es?

Was ist ein gestoppter Prozess unter Linux?