Jaka jest definicja „sesji” w systemie Linux?


Odpowiedzi:


9

Sessionzwykle odnosi się do sesji powłoki. Powłoki , co pozwala na interakcję z komputerem. Działa jak pomost między użytkownikiem a jądrem . Ilekroć uruchamiasz polecenie, jest to powłoka, która przechwytuje twoje zamiary i informuje jądro, aby zrobiło to samo.

W większości wersji Linuksa domyślną powłoką jest bashi nowa bashsesja będzie uruchamiana za każdym razem, gdy otwierasz nowy terminal. W wopublikowanych wynikach wydaje się, że masz graficzną sesję logowania (wygląda na to, że używasz komputera):

argento  :0        18set13 ?xdm?   2days  1.58s gdm-session-worker [pam/gdm-password]

Kilka otwartych emulatorów terminali:

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

Wygląda na to, że zalogowałeś się również z graficznego tty:

argento  tty2      15:11    1:01   0.09s  0.09s -bash

Każda z nich jest osobną instancją twojej powłoki i każda z nich liczy się jako osobna sesja.


2

Myślę, że każda sesja terminalowa jest sesją użytkownika. Możesz mieć więcej niż jeden terminal pod X, a są to terminale wirtualne lub możesz mieć prawdziwy terminal pod konsolą. To są wszystkie sesje. To jest moje „w”

$ w
 15:14:13 up 9 days,  6:02,  8 users,  load average: 1,03, 1,19, 1,31
USER     TTY        LOGIN@   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

Druga kolumna pokazuje tty, ponieważ możesz zobaczyć, że pts to xterm (terminal wirtualny), a druga (tty2) to logowanie do konsoli.


2

1. Mimo że użytkownik loguje się do pojedynczego procesu (powłoki, która jest interfejsem wiersza poleceń), użytkownicy kończą wiele procesów w wyniku akcji takich jak:

-> Uruchamianie nieinteraktywnego zadania w tle.
-> Przełączanie między interaktywnymi zadaniami poprzez kontrolę zadań.
-> Rozpoczęcie wielu procesów, które współpracują ze sobą przez rury.
-> Działający system okienkowy, taki jak system okien X, który umożliwia otwarcie wielu okien terminala.

2. Aby obsłużyć wszystkie te procesy, jądro musi utworzyć grupy procesów składające się z tych procesów.

3. Aby dalej zarządzać tymi grupami procesów według użytkownika, grupy te są dzielone według użytkownika na sesje (uwaga: użytkownik nie jest użytkownikiem systemu Linux, lecz powłoką lub terminalem oznacza użytkownika. Dwa terminale na tym samym komputerze zalogowane przez tego samego użytkownika systemu Linux oznacza 2 różnych użytkowników, a tym samym 2 różne sesje użytkowników. Terminal może sterować terminalem tylko dla jednej sesji).
Proces, w którym działa powłoka dla tego „użytkownika” lub sesji, jest znany jako lider sesji.

4. Zwróć także uwagę na zamknięcie terminala, naciskając przycisk „x”, aby nie wyjść z tego terminala. Ten terminal działa w tle. Jeśli chcesz przełączyć sesję z terminala, musisz się wylogować stamtąd, naciskając CTRL + D lub wyjść.

5. Po wylogowaniu z terminala jądro wysyła sygnał SIGHUP (podobny do zabicia -1) do procesu, który jest liderem sesji. Teraz każdy inny proces uruchamiany w terminalu jest potomkiem tego lidera sesji. Te procesy potomne utworzyły grupy procesów, które są kontrolowane przez ten proces lidera sesji (proces nadrzędny).

6. Proces lidera sesji wysyła SIGHUP do każdego procesu potomnego, niektóre z nich kończą się, podczas gdy inne mogą zdecydować się nie kończyć (te zawieszone lub działające w tle). Ci, którzy zdecydują się nie kończyć, zostają osieroceni w trakcie sesji i natychmiast adoptowani przez proces init (rodzic wszystkich procesów w maszynie linux).


Aby uzyskać więcej informacji, skorzystaj z linku Model procesu rozwoju systemu Linux


1

Sesja to każda powłoka terminala uruchamiana przez procesy użytkownika. Na przykład mam teraz 3 sesje. Moje środowisko pulpitu Mate i dwa okna terminalu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.