web-dev-qa-db-fra.com

Comment puis-je me déconnecter de l'interface graphique à l'aide de la CLI?

J'ai choisi une Openbox DE au moment de la connexion et le système a mis des années à charger le DE. Alors je suis passé à CLI (Ctrl+Alt+F1) et redémarré mon système (mais je voulais me déconnecter de l'interface graphique et ne pas redémarrer tout le système).

Ma question est la suivante: puis-je exécuter une commande au niveau de la CLI pour me déconnecter de l'interface graphique afin de pouvoir sélectionner différents DE. (Je ne veux pas redémarrer mon système chaque fois que DE se bloque.)


$ 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
42
Ankit

Pour mettre fin à tous les processus utilisateur et être renvoyé à l'écran de connexion, vous pouvez utiliser:

kill -9 -1

Ne l'exécutez pas en tant que root, pour des raisons discutées ici .

45
mblasco

Cela peut être fait en utilisant la commande gnome-session-quit. L'option --force est nécessaire pour supprimer la boîte de dialogue de confirmation qui apparaîtrait sans elle.

Contrairement aux applications exécutées à partir d'un émulateur de terminal X, pour terminer une session à partir d'un téléscripteur, vous devez ajouter la variable DISPLAY afin d'indiquer quel affichage X exécute la session. Par conséquent:

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

en supposant que vous utilisez GNOME sur: 0, ce qui est le cas dans des situations normales.

  • Dans Ubuntu 12.04LTS sous GNOME, la commande

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

    travaux. L'argument "--force" n'existe pas dans le niveau de mise à jour actuel]

19
Cumulus007

Veuillez suivre suggestion de takkat . La norme est Ctrl+Alt+Backspace.

Vous pouvez aussi lancer:

$ Sudo service lightdm restart
7
terdon

Autrement,

Sudo pkill -u NameOftheUser

ou

Sudo pkill x

qui tuent tous les utilisateurs.

4
Suhaib

Le vrai problème est que les variables de session DBUS doivent être définies et correspondre à la session que vous essayez de contrôler.

J'ai créé ce script qui définit les variables de session DBUS à partir de l'environnement gnome-session au cas où vous voudriez déconnecter d'autres utilisateurs/sessions:

Comment redémarrer Gnome-Shell en ligne de commande?

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
}
2
sehe

Si vous êtes dans une session xubuntu ou similaire, vous devez utiliser xfce4-session-logout au lieu des commandes de session gnome, c'est pourquoi vous voyez des avertissements

1
Sergio Abreu

C'est ce qui fonctionne le mieux pour moi (avec xfce, lightdm et ssh):

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

Ou

$ Sudo service lightdm restart
1
pascalv

En guise d'alternative, vous pouvez mettre fin aux sessions utilisateur de la manière suivante: fonctionne bien pour déconnecter des utilisateurs, à l'exception de l'utilisateur root, lors de la maintenance, par exemple.

loginctl | egrep -v "root|SESSION|listed" | awk '{print $1}' | xargs loginctl terminate-session