GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la définition d'une session sous Linux?

Session fait généralement référence à des sessions shell. Un shell est ce qui vous permet d'interagir avec l'ordinateur. Il agit comme un pont entre l'utilisateur et le noyau. Chaque fois que vous exécutez une commande, c'est le shell qui capture votre intention et dit au noyau de faire son travail.

Dans la plupart des versions Linux, le shell par défaut est bash et un nouveau bash session sera lancée à chaque fois que vous ouvrirez un nouveau terminal. Dans la sortie de w vous avez posté, vous semblez avoir votre session de connexion graphique (on dirait que vous vous déconnectez de la machine) :

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

Quelques émulateurs de terminaux ouverts :

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

Et vous semblez également vous être connecté à partir d'un tty non graphique :

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

Chacun d'eux est une instance distincte de votre shell et chacun compte comme sa propre session.


1. Bien que l'utilisateur se connecte à un seul processus (shell qui est leur interface de ligne de commande), les utilisateurs finissent par exécuter de nombreux processus à la suite d'actions telles que :

-> Exécution d'une tâche non interactive en arrière-plan.
-> Basculement entre les tâches interactives via le contrôle des tâches.
-> Démarrage de plusieurs processus qui fonctionnent ensemble via des tuyaux.
-> Exécution d'un système de fenêtrage tel que le système X Window qui permet l'ouverture de plusieurs fenêtres de terminal.

2. Afin de gérer tous ces processus, le noyau doit former des groupes de processus comprenant ces processus.

3. Pour gérer davantage ces groupes de processus en fonction de l'utilisateur, ces groupes sont divisés en sessions en fonction de l'utilisateur (notez ici que l'utilisateur n'est pas un utilisateur Linux, mais que le shell ou le terminal signifie utilisateur. Deux terminaux sur la même machine connectés par le même utilisateur Linux signifie 2 utilisateurs différents et donc 2 sessions utilisateur différentes ici. Un terminal peut contrôler le terminal pour une seule session).
Le processus qui exécute le shell pour cet "utilisateur" ou cette session est appelé responsable de session.

4. Notez également que la fermeture du terminal en appuyant sur le bouton "x" ne vous fera pas sortir de ce terminal. Ce terminal continue de fonctionner en arrière-plan. Si vous souhaitez quitter la session depuis le terminal, vous devez vous déconnecter en appuyant sur CTRL+D ou quitter.

5. Lorsque vous vous déconnectez du terminal, le noyau envoie un signal SIGHUP (similaire à kill -1) au processus qui est le leader de la session. Désormais, tous les autres processus en cours d'exécution dans le terminal sont des enfants de ce leader de session. Ces processus enfants ont formé des groupes de processus qui sont contrôlés par ce processus leader de session (processus parent).

6. Le processus leader de la session envoie SIGHUP à chaque processus enfant, certains processus se terminent, tandis que d'autres peuvent choisir de ne pas se terminer (ceux suspendus ou exécutés en arrière-plan). Ceux qui choisissent de ne pas terminer deviennent orphelins au fur et à mesure que la session se termine et sont immédiatement adoptés par le processus init (parent de tous les processus de la machine Linux).


Pour plus d'informations, consultez le lien Le modèle de processus de développement Linux


Je pense que chaque session de terminal est une session utilisateur. Vous pouvez avoir plus d'un terminal sous X et ce sont des terminaux virtuels, ou vous pouvez avoir un vrai terminal sous console. Ce sont toutes des sessions. C'est mon '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 deuxième colonne montre le tty, comme vous pouvez le voir, les pts sont xterm (terminal virtuel) l'autre (tty2) est une connexion à la console.


Linux
  1. Ce qui fait de Linux le système d'exploitation durable

  2. Qu'est-ce qui rend la communauté Linux spéciale ?

  3. Quel est le niveau d'exécution actuel du système Linux ?

  4. Quel est le but du fichier .bashrc sous Linux

  5. Comment arrêter un processus d'écran sous Linux?

Qu'est-ce que la commande Linux Watch + Exemples

Qu'est-ce que le Shell sous Linux ?

SIGTERM vs SIGKILL :Quelle est la différence ?

Qu'est-ce que la commande kill sous Linux ?

Qu'est-ce que la table des processus Linux ? En quoi cela consiste?

Qu'est-ce qu'un processus arrêté sous Linux ?