Qual è la definizione di "sessione" in Linux?


Risposte:


9

Sessiondi solito si riferisce alle sessioni di shell. Una shell è ciò che ti consente di interagire con il computer. Funziona come un ponte tra l'utente e il kernel . Ogni volta che esegui un comando, è la shell che cattura il tuo intento e dice al kernel di fare la sua cosa.

Nella maggior parte dei gusti Linux, la shell predefinita è bashe una nuova bashsessione verrà lanciata ogni volta che si apre un nuovo terminale. Nell'output del wtuo post, sembra che tu abbia la tua sessione di accesso grafica (sembra che stai cacciando la macchina):

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

Alcuni emulatori di terminali aperti:

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

E sembra che tu abbia anche effettuato l'accesso da un tty non grafico:

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

Ognuna di queste è un'istanza separata della shell e ognuna conta come propria sessione.


2

Penso che ogni sessione terminale sia una sessione utente. Puoi avere più di un terminale sotto X e questi sono terminali virtuali, oppure puoi avere un vero terminale sotto console. Quelle sono tutte sessioni. Questa è la mia "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

La seconda colonna mostra il tty, come puoi vedere i pts sono xterm (terminale virtuale) l'altro (tty2) è un login console.


2

1. Sebbene l'utente acceda a un singolo processo (shell che è la sua interfaccia a riga di comando), gli utenti finiscono per eseguire molti processi a seguito di azioni come:

-> Esecuzione di attività non interattive in background.
-> Commutazione tra attività interattiva tramite controllo lavoro.
-> Avvio di più processi che funzionano insieme attraverso i tubi.
-> Esecuzione di un sistema di finestre come il sistema X Window che consente l'apertura di più finestre del terminale.

2. Per gestire tutti questi processi, il kernel deve formare gruppi di processi che comprendono questi processi.

3. Per gestire ulteriormente questi gruppi di processi in base all'utente, questi gruppi sono suddivisi in base all'utente in sessioni (si noti che l'utente non è un utente Linux, ma shell o terminale indica l'utente. Due terminali sulla stessa macchina hanno effettuato l'accesso dallo stesso utente Linux sta per 2 utenti diversi e quindi 2 sessioni utente diverse qui. Un terminale può controllare il terminale solo per una singola sessione).
Il processo che esegue la shell per quell'utente o quella sessione è noto come leader della sessione.

4. Notare inoltre che il terminale di chiusura premendo il pulsante 'x' non fa uscire da quel terminale. Quel terminale continua a funzionare in background. Se si desidera superare la sessione dal terminale, è necessario disconnettersi da lì premendo CTRL + D o uscire.

5. Mentre ti disconnetti dal terminale, il kernel invia il segnale SIGHUP (simile a kill -1) per elaborare il leader della sessione. Ora ogni altro processo in esecuzione nel terminale è figlio di questo leader della sessione. Questi processi figlio avevano formato gruppi di processi che sono controllati da questo processo di leader della sessione (processo padre).

6. Il processo del leader della sessione invia SIGHUP a ciascun processo figlio, alcuni terminano, mentre alcuni possono scegliere di non terminare (quelli sospesi o in esecuzione in background). Quelli che scelgono di non terminare diventano orfani come sessioni chiuse e immediatamente adottati dal processo init (genitore di tutto il processo nella macchina linux).


Per ulteriori informazioni, consultare Link Il modello di processo dello sviluppo Linux


1

Una sessione è ogni shell terminale gestita dai processi di un utente. Per un esempio, ho 3 sessioni in esecuzione in questo momento. Ambiente desktop My Mate e finestre dei miei due terminali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.