GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la definición de una sesión en Linux?

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.


Linux
  1. ¿Qué hace que Linux sea el sistema operativo sostenible?

  2. Linux:¿es el proceso el que tiene una terminal de control o es la sesión la que tiene una terminal de control?

  3. ¿Qué significa &al final de un comando de Linux?

  4. ¿Qué es un comando para encontrar la prioridad del proceso en Linux?

  5. ¿Cuál es el orden predeterminado de clasificación de Linux?

¿Qué es el comando Watch de Linux + ejemplos?

¿Qué es el Shell en Linux?

SIGTERM vs SIGKILL:¿Cuál es la diferencia?

¿Qué es el comando matar en Linux?

¿Qué es la tabla de procesos de Linux? ¿En qué consiste?

¿Qué es un proceso detenido en Linux?