Session
generalmente se refiere a sesiones de shell. Un caparazón es lo que le permite interactuar con la computadora. Actúa como un puente entre el usuario y el kernel. Cada vez que ejecuta un comando, es el shell el que captura su intención y le dice al núcleo que haga lo suyo.
En la mayoría de versiones de Linux, el shell predeterminado es bash
y un nuevo bash
La sesión se iniciará cada vez que abra un nuevo terminal. En la salida de w
que publicaste, parece que tienes tu sesión de inicio de sesión gráfica (parece que estás saliendo de la máquina):
argento :0 18set13 ?xdm? 2days 1.58s gdm-session-worker [pam/gdm-password]
Algunos emuladores de terminal abiertos:
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
Y también parece haber iniciado sesión desde un tty no gráfico:
argento tty2 15:11 1:01 0.09s 0.09s -bash
Cada uno de estos es una instancia separada de su shell y cada uno cuenta como su propia sesión.
1. Aunque el usuario inicia sesión en un solo proceso (shell, que es su interfaz de línea de comandos), los usuarios terminan ejecutando muchos procesos como resultado de acciones como:
-> Ejecutar tareas no interactivas en segundo plano.
-> Cambiar entre tareas interactivas a través del control de trabajos.
-> Inicio de múltiples procesos que funcionan juntos a través de tuberías.
-> Ejecutar un sistema de ventanas como el sistema de ventanas X que permite abrir múltiples ventanas de terminal.
2. Para manejar todos estos procesos, el núcleo necesita formar grupos de procesos que formen parte de estos procesos.
3. Para administrar estos grupos de procesos aún más según el usuario, estos grupos se dividen según el usuario en sesiones. (Tenga en cuenta que aquí el usuario no es un usuario de Linux, pero shell o terminal significa usuario. Dos terminales en la misma máquina iniciada por el mismo usuario de Linux significa 2 usuarios diferentes y, por lo tanto, 2 sesiones de usuario diferentes aquí. Un terminal puede controlar el terminal solo para una sola sesión).
El proceso que ejecuta shell para ese "usuario" o sesión se conoce como líder de sesión.
4. También tenga en cuenta que cerrar la terminal presionando el botón 'x' no lo hará salir de esa terminal. Ese terminal sigue ejecutándose en segundo plano. Si desea volver a la sesión desde la terminal, debe cerrar la sesión desde allí presionando CTRL+D o salir.
5. Al cerrar sesión en la terminal, el kernel envía una señal SIGHUP (similar a kill -1) al proceso que es el líder de la sesión. Ahora todos los demás procesos que se ejecutan en la terminal son secundarios de este líder de sesión. Estos procesos secundarios habían formado grupos de procesos que están controlados por este proceso líder de sesión (proceso principal).
6. El proceso líder de la sesión envía SIGHUP a cada proceso secundario, algunos procesos terminan, mientras que otros pueden optar por no terminar (aquellos suspendidos o ejecutándose en segundo plano). Los que eligen no terminar quedan huérfanos como sesiones superadas y son adoptados inmediatamente por el proceso de inicio (principal de todos los procesos en la máquina Linux).
Para obtener más información, consulte el enlace El modelo de proceso de desarrollo de Linux
Creo que cada sesión de terminal es una sesión de usuario. Puede tener más de un terminal en X y esos son terminales virtuales, o puede tener un terminal real en la consola. Esas son todas las sesiones. Esta es mi '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 segunda columna muestra el tty, como puede ver, los pts son xterm (terminal virtual), el otro (tty2) es un inicio de sesión de consola.