En entradas anteriores comenté que cuándo se nos queda colgada la sesión podíamos intentar matar el proceso que nos da problemas de forma gráfica o con una tty cuándo el entorno gráfico no responde.

Ya expliqué como matar procesos que se quedan consumiendo memoria del ordenador o tiempo de la CPU. En esta entrada mostraré como cerrar la sesión de un usuario desde la tty.

Cerrando sesiones

Para cerrar la sesión de usuario desde el entorno gráfico pulsamos la combinación de teclas Crtl + Alt + retroceso. Si con la combinación no se cierra la sesión accedemos a una tty y con permisos de root usamos skill para cerrar la sesión del usuario.

[root@equipo ~]# skill -STOP -u usuario

Si la sesión del usuario sigue abierta y no se da cerrado entonces enviamos la señal "KILL" en vez de "STOP"

[root@equipo ~]# skill -KILL -u usuario

También se puede cerrar y matar la sesión de usuario usando el comando pgrep y es recomendable usar pgrep en vez de skill puesto que skill esta obsoleto (al menos teóricamente...)

Un ejemplo con pkill:

[root@equipo ~]# pkill -KILL -u usuario

¡Mucho cuidado con matar la sesión de root! Si matas la sesión de root te arriesgas a dejar el sistema totalmente colgado teniendo entonces que reiniciar el equipo.

Cerrando la sesión de Gnome Shell

Antes de cerrar todas las sesiones abiertas de un usuario (que se lo que hacemos en el punto anterior) podemos intentar cerrar la sesión gráfica nada más. Esto lo hacemos en Gnome Shell con el comando gnome-session-save.

Si simplemente queremos cerrar la sesión desde una tty, entramos con el usuario de la sesión del entorno gráfico e introducimos lo siguiente:

[usuario@equipo ~]$ gnome-session-save --logout

Si la sesión no se cierra porque esta colgada o alguna aplicación no deja cerrar sesión podemos intentar forzar el cierre de la sesión:

[usuario@equipo ~]$ gnome-session-save --force-logout

Con estos comandos deberíamos poder cerrar las sesiones aún estando colgadas. Si el sistema no se estabiliza y no encontramos el motivo tendremos que pasar a la última opción del informático: reiniciar. Pero eso queda para la próxima entrada.

Extra: Comandos interesantes para scripts

Además de los comandos mencionados arriba, hay otros comandos que son útiles relacionados con el cierre de sesión para usar en los scripts.

Si queremos cerrar una sesión mostrando el diálogo de cierre de sesión:

#!/bin/bash
gnome-session-save --logout-dialog

Si queremos mostrar el diálogo de apagar en vez del standard:

#!/bin/bash
gnome-session-save --shutdown-dialog

Recomiendo añadir la directiva --gui a los dos comandos anteriores para poder ver los errores que pudiera dar el sistema al cerrar la sesión. Un ejemplo:

#!/bin/bash
gnome-session-save --gui --logout