GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la definizione di una sessione in Linux?

Session di solito si riferisce alle sessioni della shell. Una shell è ciò che ti permette di interagire con il computer. Funge da 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 il suo dovere.

Nella maggior parte delle versioni di Linux, la shell predefinita è bash e un nuovo bash la sessione verrà avviata ogni volta che apri un nuovo terminale. Nell'output di w hai postato, sembra che tu abbia la tua sessione di accesso grafico (sembra che tu stia scaricando via sshing dalla macchina):

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

Alcuni emulatori di terminale 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 anche che tu abbia 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 tua shell e ognuna conta come una propria sessione.


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

-> Esecuzione di attività non interattive in background.
-> Passaggio da un'attività interattiva all'altra tramite il controllo del lavoro.
-> Avvio di più processi che funzionano insieme tramite pipe.
-> Esecuzione di un sistema di finestre come X Window System che consente l'apertura di più finestre di terminale.

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

3. Per gestire ulteriormente questi gruppi di processi in base all'utente, questi gruppi sono divisi in base all'utente in sessioni. sta per 2 utenti diversi e quindi 2 diverse sessioni utente qui.Un terminale può controllare il terminale solo per una singola sessione).
Il processo che esegue la shell per quell'"utente" o sessione è noto come leader di sessione.

4. Si noti inoltre che la chiusura del terminale premendo il pulsante "x" non consente di uscire da quel terminale. Quel terminale continua a funzionare in background. Se vuoi terminare la sessione dal terminale, devi uscire da lì premendo CTRL+D o uscire.

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

6. Il processo leader della sessione invia SIGHUP a ciascun processo figlio, alcuni processi terminano, mentre altri possono scegliere di non terminare (quelli sospesi o in esecuzione in background). Coloro che scelgono di non terminare diventano orfani al termine della sessione e vengono immediatamente adottati dal processo init (genitore di tutti i processi nella macchina Linux).


Per ulteriori informazioni, fare riferimento al collegamento Il modello di processo dello sviluppo di Linux


Penso che ogni sessione terminale sia una sessione utente. Puoi avere più di un terminale sotto X e quelli sono terminali virtuali, oppure puoi avere un terminale reale sotto la console. Queste 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        [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

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


Linux
  1. Linux:è il processo che ha un terminale di controllo o è la sessione che ha un terminale di controllo?

  2. Qual è lo scopo del file .bashrc in Linux

  3. Come fermare un processo dello schermo in Linux?

  4. Cosa significa &alla fine di un comando Linux?

  5. Qual è il significato di curl -k -i -X ​​in Linux?

Cos'è il comando Linux Watch + Esempi

Che cos'è la shell in Linux?

SIGTERM vs SIGKILL:qual è la differenza?

Qual è il comando kill in Linux?

Qual è la tabella dei processi Linux? In cosa consiste?

Cos'è un processo interrotto in Linux?