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.