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

43

Ich habe zum Zeitpunkt der Anmeldung eine Openbox-DE ausgewählt und das System brauchte Ewigkeiten, um die DE zu laden. Also habe ich zu CLI ( Ctrl+ Alt+ F1) gewechselt und mein System neu gestartet (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
Ankit
quelle

Antworten:

45

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

kill -9 -1

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

mblasco
quelle
3
Funktioniert super, aber warum? Warum startet LightDM neu, nachdem Sie alles außer init beendet haben?
Ciro Santilli 新疆 7 改造 法轮功 六四
1
@CiroSantilli 巴拿馬 巴拿馬 六四 事件 事件 Weil es gewaltsam (9) ALLES TÖTET, was es darf. Was bedeutet, dass jeder Prozess Ihnen gehört. Es ist absolut nicht empfehlenswert, SIGKILL zum Beenden von Apps zu verwenden! Verwende SIGTERM (15). Anwendungen können auf dieses Signal reagieren und aufräumen.
ManuelSchneid3r
22

Dies kann mit dem gnome-session-quitBefehl erfolgen. Es muss die --forceOption zum Unterdrücken des Bestätigungsdialogs vorhanden sein, der ohne ihn 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 DISPLAYVariable 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.]

Cumulus007
quelle
Danke, ich habe den Befehl ausgeführt, aber ich habe einen Fehler bekommen. Ich habe meinen Beitrag so bearbeitet, dass er den Fehler enthält. Bitte teilen Sie, wenn ich etwas falsch gemacht habe.
Ankit
Ich habe nicht bemerkt, dass Sie erwähnt haben, dass Sie Openbox verwenden. Leider funktioniert dieser Befehl nur mit einer Ubuntu-Standardinstallation (Unity / GNOME). Als Alternative können Sie vollständig heruntergefahren , die GUI und damit die Sitzung , indem Sie sudo service lightdm stop. Bearbeiten: Welche Desktop-Umgebung verwenden Sie? Openbox ist nur ein Fenstermanager.
Cumulus007
ich versuche kde / openbox oder gnome / openbox zu benutzen.
Ankit
Funktioniert nicht, wenn Ihr Terminal nicht an derselben dbus-Sitzung wie die Gnome-Sitzung teilnimmt. Wie kommst du in eine andere dbus Session?
Zan Lynx
Ist dies der Befehl, der ausgeführt wird, wenn Sie über die GUI auf "Abmelden ..." klicken?
Dor
7

Bitte folgen Sie dem Vorschlag von takkat . Der Standard ist Ctrl+ Alt+ Backspace.

Sie können auch ausführen:

$ sudo service lightdm restart
terdon
quelle
1
gdm wurde durch lightdm ersetzt. Außerdem ist Strg + Alt + Rücktaste standardmäßig deaktiviert.
Cumulus007
@ Cumulus007 Danke, Antwort aktualisiert. Ich weiß, Strg + Alt + Rücktaste ist standardmäßig deaktiviert, habe nie verstanden, warum, aber ich bin mir dessen bewusst. Ich informiere nur das OP, was die Standard-Tastenkombination ist, die am häufigsten verwendet wird. Ich halte mich am besten an die Standards, da sie die Fehlerbehebung erleichtern.
Terdon
1
Wenn Sie lightdm stoppen, erfolgt keine weitere Anmeldeaufforderung, sodass er nicht die Möglichkeit hat, sich in einer anderen Umgebung anzumelden.
Poolie
1
Fair genug @poolie, Antwort aktualisiert.
terdon
4

Ein anderer Weg,

sudo pkill -u NameOftheUser

oder

sudo pkill x

die alle Benutzer töten.

Suhaib
quelle
Das ist ein bisschen hart, findest du nicht?
Akolyth
Hart? Es ist extrem albern.
HörmannHH
2

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 $@"
            ) | sudo -u "$USERNAME" sh -;
        fi
    done
}
sehe
quelle
Die Verwendung von --logout --no-promptoder --forceanstelle von nur --logoutist eine bessere Idee, da sonst eine Abmeldeaufforderung angezeigt wird.
Gioele
1

Wenn Sie sich in einer xubuntu-Sitzung oder einer ähnlichen Sitzung befinden und xfce4-session-logout verwenden müssen, das aus Gnome-Sitzungsbefehlen stammt, werden Warnungen angezeigt

Sergio Abreu
quelle
1

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

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

Oder

$ sudo service lightdm restart
Pascalv
quelle
0

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
Charles van der Genugten
quelle
-2

Mit dem Befehl können Sie killall gnome-sessionsich abmelden. Dies funktioniert für alle GNOME-Sitzungen und wenn ich mich richtig an alle GNOME-Sitzungen erinnere. Sie gelangen direkt zurück zu LightDM, sodass Sie eine neue DE oder einen neuen Benutzer auswählen können. :)

Ryan McClure
quelle
2
Nicht der beste Weg, sich abzumelden. Überprüfen Sie askubuntu.com/questions/69114/…
jokerdino
Ich habe diese Option noch nie gesehen. Ich sollte wahrscheinlich damit anfangen. Ich nehme an, das killall gnome-sessionist eine gewaltsame Möglichkeit, es zu schließen.
Ryan McClure