1. Aunque el usuario inicia sesión en un proceso único (shell, que es su interfaz de línea de comando), los usuarios terminan ejecutando muchos procesos como resultado de acciones como:
-> Ejecución de tareas no interactivas en segundo plano.
-> Cambio entre tareas interactivas a través del control de trabajo.
-> Inicio de múltiples procesos que trabajan 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 debe formar grupos de procesos que comprendan estos procesos.
3. Para administrar estos grupos de procesos según el usuario, estos grupos se dividen según el usuario en sesiones. significa 2 usuarios diferentes y, por lo tanto, 2 sesiones de usuario diferentes aquí. Un terminal puede controlar el terminal para una sola sesión).
El proceso que ejecuta el shell para ese "usuario" o sesión se conoce como líder de sesión.
4. Observe también el cierre del terminal presionando el botón 'x' para no salir de ese terminal. Esa terminal sigue funcionando en segundo plano. Si desea finalizar la sesión desde la terminal, debe cerrar sesión desde allí presionando CTRL + D o salir.
5. Al cerrar sesión desde la terminal, el núcleo envía la señal SIGHUP (similar a kill -1) para procesar el líder de la sesión. Ahora, cualquier otro proceso que se ejecute en la terminal es hijo de este líder de sesión. Estos procesos secundarios habían formado grupos de procesos controlados por este proceso de líder de sesión (proceso principal).
6. El proceso de líder de sesión envía SIGHUP a cada proceso secundario, algunos procesos finalizan, mientras que algunos pueden elegir no finalizar (aquellos suspendidos o que se ejecutan en segundo plano). Aquellos que eligen no terminar quedan huérfanos como sesiones adicionales e inmediatamente adoptados por el proceso init (padre de todo el proceso en la máquina Linux).
Para más información, consulte el enlace El modelo de proceso de desarrollo de Linux