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

Réponses:

9

Sessionse réfère généralement aux 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 de Linux, le shell par défaut est bashet une nouvelle bashsession sera lancée chaque fois que vous ouvrirez un nouveau terminal. Dans la sortie que wvous avez publiée, vous semblez avoir votre session de connexion graphique (on dirait que vous battez 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 terminal 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.

terdon
la source
2

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 la 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        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 deuxième colonne montre le tty, comme vous pouvez le voir, les points sont xterm (terminal virtuel), l'autre (tty2) est une connexion à la console.

Luigi
la source
2

1. Bien que l'utilisateur se connecte à un seul processus (shell qui est son interface en 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 à travers des tuyaux.
-> Système de fenêtrage en cours d'exécution tel que le système X window qui permet d'ouvrir 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 fonction de l'utilisateur en sessions. (Notez ici que l'utilisateur n'est pas un utilisateur Linux, mais le shell ou le terminal représente l'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 d'utilisateurs 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é chef de session.

4. Notez également la fermeture du terminal en appuyant sur le bouton «x» pour ne pas sortir de ce terminal. Ce terminal continue de fonctionner en arrière-plan. Si vous souhaitez interrompre la session depuis le terminal, vous devez vous déconnecter de là 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 exécutés dans le terminal sont des enfants de ce chef de session. Ces processus enfants avaient formé des groupes de processus qui sont contrôlés par ce processus de chef de session (processus parent).

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


Pour en savoir plus Lien de référence Le modèle de processus de développement Linux

YATIN GUPTA
la source
1

Une session est chaque shell de terminal exécuté par les processus d'un utilisateur. Par exemple, j'ai 3 sessions en cours en ce moment. Mon environnement de bureau Mate et mes deux fenêtres de terminal.

Vid Plavsic
la source