¿Cómo puedo cerrar sesión desde la GUI usando CLI?

43

Elegí un Openbox DE al momento de iniciar sesión y el sistema tardó años en cargar el DE. Así que cambié a CLI ( Ctrl+ Alt+ F1) y reinicié mi sistema (pero quería cerrar la sesión de la GUI y no reiniciar todo el sistema).

Mi pregunta es, ¿puedo emitir algún comando en CLI para cerrar sesión en la GUI y poder seleccionar diferentes DE. (No quiero reiniciar mi sistema cada vez que DE se bloquea).


$ DISPLAY=:0 gnome-session-quit --force

** (gnome-session-quit:3144): WARNING **: Failed to call logout: The name org.gnome.SessionManager was not provided by any .service files
Ankit
fuente

Respuestas:

45

Para finalizar todos los procesos del usuario y volver a la pantalla de inicio de sesión, puede usar:

kill -9 -1

Sin embargo, no lo ejecute como root, por las razones discutidas aquí .

mblasco
fuente
3
Funciona muy bien, pero ¿por qué? En especial, ¿por qué LightDM se reinicia después de que eliminaste todo excepto init?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 Porque mata con fuerza (9) TODO lo que está permitido. Lo que significa cada proceso de su propiedad. ¡Usar SIGKILL para terminar aplicaciones no es absolutamente recomendable! Utilice SIGTERM (15). Las aplicaciones pueden reaccionar ante esta señal y realizar la limpieza.
ManuelSchneid3r
22

Esto se puede hacer usando el gnome-session-quitcomando. Necesita la --forceopción de suprimir el diálogo de confirmación que aparecería sin él.

A diferencia de las aplicaciones que se ejecutan desde un emulador de terminal X, finalizar una sesión desde un TTY requiere que agregue la DISPLAYvariable para indicar qué pantalla X está ejecutando la sesión. Por lo tanto:

DISPLAY=:0 gnome-session-quit --force

suponiendo que está ejecutando GNOME en: 0, que es el caso en situaciones normales.

  • En Ubuntu 12.04LTS ejecutando GNOME, el comando

    "DISPLAY=:0 gnome-session-quit --logout --no-prompt" 
    

    trabajos. El argumento "--force" no existe en el nivel de actualización actual]

Cumulus007
fuente
gracias, ejecuté el comando pero recibí un error. He editado mi publicación para incluir el error. Por favor comparte si he hecho algo mal.
Ankit
Lo malo es que no me di cuenta de que mencionaste que estás usando Openbox. Desafortunadamente, este comando solo funcionará con una instalación estándar de Ubuntu (Unity / GNOME). Como alternativa, puede cerrar completamente la GUI y, por lo tanto, su sesión ejecutándose sudo service lightdm stop. editar: ¿qué entorno de escritorio estás usando? Openbox es solo un administrador de ventanas.
Cumulus007
Estoy tratando de usar kde / openbox o gnome / openbox.
Ankit
No funciona si su terminal no es parte de la misma sesión de dbus que la sesión de gnome. ¿Cómo entras en otra sesión de dbus?
Zan Lynx
¿Es este el comando que se ejecuta al hacer clic en "Cerrar sesión ..." a través de la GUI?
Dor
7

Por favor, siga la sugerencia de takkat . El estándar es Ctrl+ Alt+ Backspace.

También puedes ejecutar:

$ sudo service lightdm restart
terdon
fuente
1
gdm ha sido reemplazado por lightdm. Además, ctrl + alt + retroceso está deshabilitado de forma predeterminada.
Cumulus007
@ Cumulus007 Gracias, respuesta actualizada. Sé que ctrl + alt + retroceso está deshabilitado de forma predeterminada, nunca entendí por qué, pero soy consciente de ello. Solo estoy informando al OP cuál es la combinación de teclas estándar más utilizada. Creo que es mejor cumplir con los estándares, ya que facilita la resolución de problemas.
terdon
1
Detener lightdm significará que no hay un mensaje de inicio de sesión después, por lo que no tendrá la oportunidad de iniciar sesión en un entorno diferente.
Poolie
1
Bastante justo @poolie, respuesta actualizada.
terdon
4

De otra manera,

sudo pkill -u NameOftheUser

o

sudo pkill x

que matan a todos los usuarios.

Suhaib
fuente
Eso es un poco duro, ¿no te parece?
acólito
¿Duro? Es extremadamente tonto.
HörmannHH
2

El verdadero problema es que las variables de sesión DBUS deben establecerse y coincidir con la sesión que está tratando de controlar.

Creé este script que establece las variables de sesión DBUS desde el entorno de sesión gnome en caso de que desee cerrar sesión en otros usuarios / sesiones:

¿Cómo reiniciar Gnome-Shell desde la línea de comandos?

function logout() {
    local USERNAME
    export USERNAMES=( ) 
    while [ -n "$1" ]; do case "$1" in
        -* ) break ;;
        *) USERNAMES+=( "$1" ); shift ;;
    esac; done

    for USERNAME in "${USERNAMES[@]}"; do
        local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
        if [ -n "$SESSION_PID" ]; then
            (
                sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
                echo "gnome-session-quit --logout $@"
            ) | sudo -u "$USERNAME" sh -;
        fi
    done
}
sehe
fuente
Usar --logout --no-prompto en --forcelugar de simplemente --logoutes una mejor idea, de lo contrario se mostrará un mensaje de cierre de sesión.
gioele
1

Si está en una sesión de xubuntu o similar, debe usar xfce4-session-logout en lugar de comandos de sesión de gnome, es por eso que ve advertencias

Sergio Abreu
fuente
1

Esto es lo que funciona mejor para mí (con xfce, lightdm y ssh):

$ DISPLAY=:0.0 xfce4-session-logout --logout

O

$ sudo service lightdm restart
pascalv
fuente
0

Como alternativa, puede finalizar las sesiones de usuario utilizando lo siguiente, funciona bien para cerrar la sesión de los usuarios, excepto para el usuario raíz, por ejemplo, al realizar tareas de mantenimiento.

loginctl | egrep -v "root|SESSION|listed" | awk '{print $1}' | xargs loginctl terminate-session
Charles van der Genugten
fuente
-2

Puede usar el comando killall gnome-sessionpara cerrar sesión. Esto funcionará para todas las sesiones de GNOME y si recuerdo correctamente todas las relacionadas con GNOME. Le lleva de vuelta a LightDM para que pueda seleccionar un nuevo DE o un nuevo usuario. :)

Ryan McClure
fuente
2
No es la mejor manera de cerrar sesión. Consulte askubuntu.com/questions/69114/…
jokerdino
Nunca he visto esta opción antes. Probablemente debería comenzar a usar esto. Supongo que killall gnome-sessiones una forma contundente de cerrarlo.
Ryan McClure el