it-swarm.com.de

Wie kann ich mich mit der CLI von der GUI abmelden?

Ich habe zum Zeitpunkt der Anmeldung eine Openbox-DE ausgewählt und das System brauchte Ewigkeiten, um die DE zu laden. Also wechselte ich zu CLI (Ctrl+Alt+F1) und startete mein System neu (aber ich wollte mich von der GUI abmelden und nicht das gesamte System neu starten).

Meine Frage ist, kann ich einen Befehl an der CLI ausgeben, um mich von der GUI abzumelden, damit ich ein anderes DE auswählen kann. (Ich möchte mein System nicht jedes Mal neu starten, wenn DE hängt.)


$ 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

Um alle Benutzerprozesse zu beenden und zum Anmeldebildschirm zurückzukehren, können Sie Folgendes verwenden:

kill -9 -1

Führen Sie es aus den genannten Gründen nicht als root aus hier .

45
mblasco

Dies kann mit dem Befehl gnome-session-quit erfolgen. Es benötigt die Option --force, um das Bestätigungsdialogfeld zu unterdrücken, das ohne diese Option angezeigt würde.

Im Gegensatz zu Anwendungen, die von einem X-Terminal-Emulator ausgeführt werden, müssen Sie zum Beenden einer Sitzung von einem TTY aus die Variable DISPLAY anhängen, um anzugeben, auf welcher X-Anzeige die Sitzung ausgeführt wird. Daher:

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

vorausgesetzt, Sie führen GNOME unter: 0 aus, was in normalen Situationen der Fall ist.

  • In Ubuntu 12.04LTS läuft unter GNOME der Befehl

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

    funktioniert. Das Argument "--force" ist in der aktuellen Update-Version nicht vorhanden.]

19
Cumulus007

Bitte folgen Sie takkat's Vorschlag . Der Standard ist Ctrl+Alt+Backspace.

Sie können auch ausführen:

$ Sudo service lightdm restart
7
terdon

Ein anderer Weg,

Sudo pkill -u NameOftheUser

oder

Sudo pkill x

die alle Benutzer töten.

4
Suhaib

Das eigentliche Problem besteht darin, dass die DBUS-Sitzungsvariablen festgelegt werden müssen und mit der Sitzung übereinstimmen, die Sie steuern möchten.

Ich habe dieses Skript erstellt, das die DBUS-Sitzungsvariablen aus der Gnome-Sitzungsumgebung für den Fall festlegt, dass Sie andere Benutzer/Sitzungen abmelden möchten:

Wie starte ich Gnome-Shell von der Kommandozeile aus neu?

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 [email protected]"
            ) | Sudo -u "$USERNAME" sh -;
        fi
    done
}
2
sehe

Wenn Sie sich in einer xubuntu-Sitzung oder einer ähnlichen Sitzung befinden, müssen Sie xfce4-session-logout anstelle von gnome-sitzungsbefehlen verwenden. Aus diesem Grund werden Warnungen angezeigt

1
Sergio Abreu

Dies funktioniert am besten für mich (mit xfce, lightdm und ssh):

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

Oder

$ Sudo service lightdm restart
1
pascalv

Alternativ können Sie Benutzersitzungen wie folgt beenden, um Benutzer mit Ausnahme des Rootbenutzers abzumelden, beispielsweise bei Wartungsarbeiten.

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