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

43

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 j'ai 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
Ankit
la source

Réponses:

45

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 les raisons évoquées ici .

Mblasco
la source
3
Fonctionne très bien, mais pourquoi? En particulier, pourquoi LightDM redémarre-t-il après avoir tout tué, sauf init?
Ciro Santilli a annoncé le
1
@CiroSantilli 文件 六四 事件 法轮功 Parce qu'il tue de force (9) TOUT est autorisé à le faire. Ce qui signifie que chaque processus appartient à vous. Utiliser SIGKILL pour mettre fin aux applications n'est absolument pas recommandé! Utilisez SIGTERM (15). Les applications peuvent réagir à ce signal et effectuer un nettoyage.
ManuelSchneid3r
22

Cela peut être fait en utilisant la gnome-session-quitcommande. Il faut l' --forceoption 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 DISPLAYvariable pour indiquer quel affichage X exécute la session. Par conséquent:

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

en supposant que vous exécutiez 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]

Cumulus007
la source
merci, j'ai exécuté la commande mais j'ai eu une erreur. J'ai modifié mon message pour inclure l'erreur. S'il vous plaît partager si j'ai fait quelque chose de mal.
Ankit
Ma mauvaise, je n'ai pas remarqué que vous avez mentionné que vous utilisez Openbox. Malheureusement, cette commande ne fonctionnera qu'avec une installation Ubuntu standard (Unity / GNOME). En guise d'alternative, vous pouvez arrêter complètement l'interface graphique et ainsi votre session en cours d'exécution sudo service lightdm stop. edit: quel environnement de bureau utilisez-vous? Openbox est juste un gestionnaire de fenêtres.
Cumulus007
J'essaie d'utiliser kde / openbox ou gnome / openbox.
Ankit
Ne fonctionne pas si votre terminal ne fait pas partie de la même session dbus que la session gnome. Comment entrez-vous dans une autre session dbus?
Zan Lynx
S'agit-il de la commande qui est exécutée lorsque vous cliquez sur "Log Out ..." via l'interface graphique?
Dor
7

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

Vous pouvez aussi lancer:

$ sudo service lightdm restart
terdon
la source
1
Gdm a été remplacé par lightdm. De plus, ctrl + alt + retour arrière est désactivé par défaut.
Cumulus007
@ Cumulus007 Merci, réponse mise à jour. Je sais que ctrl + alt + backspace est désactivé par défaut, je n’ai jamais compris pourquoi, mais j’en suis conscient. J'informe simplement le PO de la combinaison de touches standard, la plus couramment utilisée. Je trouve qu'il est préférable de respecter les normes, car cela facilite le dépannage.
terdon
1
Si vous arrêtez lightdm, il n’y aura pas d’invite de connexion par la suite. Il n’aura donc pas la possibilité de se connecter à un environnement différent.
poolie
1
Assez bien @poolie, réponse mise à jour.
terdon
4

Autrement,

sudo pkill -u NameOftheUser

ou

sudo pkill x

qui tuent tous les utilisateurs.

Suhaib
la source
C'est un peu dur, vous ne pensez pas?
acolyte
Dur? C'est extrêmement bête.
HörmannHH
2

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 si vous souhaitez 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
}
voir
la source
Utiliser --logout --no-promptou --forceau lieu de simplement --logoutest une meilleure idée, sinon une invite de déconnexion apparaîtra.
gioele
1

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

Sergio Abreu
la source
1

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
pascalv
la source
0

En guise d'alternative, vous pouvez mettre fin aux sessions utilisateur à l'aide des éléments suivants, 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
Charles van der Genugten
la source
-2

Vous pouvez utiliser la commande killall gnome-sessionpour vous déconnecter. Cela fonctionnera pour toutes les sessions GNOME et si je me souviens bien de toutes les sessions liées à GNOME. Cela vous ramène directement à LightDM afin que vous puissiez sélectionner un nouveau DE ou un nouvel utilisateur. :)

Ryan McClure
la source
2
Pas le meilleur moyen de se déconnecter. Vérifiez askubuntu.com/questions/69114/...
jokerdino
Jamais vu cette option avant. Je devrais probablement commencer à utiliser ceci. Je suppose que killall gnome-sessionc'est un moyen puissant de le fermer.
Ryan McClure