Wie starte ich GNOME Shell von der Kommandozeile aus neu?


50

Ich möchte eine Tastenkombination implementieren, um die Gnome-Shell bei jedem Absturz neu zu starten ( einige Fehler sind derzeit noch nicht behoben). Dafür bräuchte ich eine Kommandozeile, um die Shell neu zu starten.

Der Befehl Alt+ F2und restartfunktioniert nicht, wenn die Shell abstürzt, da die Eingabeaufforderung in der Shell implementiert ist .

Also, wie starte ich die Gnome-Shell von der Kommandozeile aus neu?


HINWEIS: Alt + F2 und restartstoppt alle laufenden Programme. (Ich weiß immer noch nicht, wie ich die GUI neu starten kann, ohne die Programme zu stoppen.)
— Andriy Makukha

Antworten:


48

Der Befehl zum Ersetzen der Gnom-Shell wäre gnome-shell --replace.

Von der Manualseite von gnome-shell:

--replace             Replace the running window manager

2
Danke, ich war mir nicht sicher --replace= "Neustart".
— Benjamin

4
Ab GNOME Shell 3.30.1 unter Ubuntu 18.10 funktioniert diese Lösung nicht mehr. Der Benutzer wird auf den Anmeldebildschirm verwiesen und verliert alle seine Arbeit. Die richtige Lösung lautet jetzt commandline: "killall -3 gnome-shell" oder ALT + f2 und r (falls möglich).
— C. Rogers

1
ALT+f2(show command prompt) + gnome-shell --replacewird in 18.04 gut funktionieren. Alle laufenden Programme werden nicht gestoppt.
— Lifeisfoo

Ich füge das kaufmännische Und am Ende des Befehls hinzu, um den Prozess in den Hintergrund zu stellen, damit ich das Terminal schließen kann, ohne die Gnom-Shell gnome-shell --replace &
— Teddy,

31

Am einfachsten ist es, Alt+ F2und rdann einzugeben ↵.


5
Das stimmt, aber genau das ist nicht die Frage. Die Frage ist dann: Was passiert, wenn Sie dies tun. Damit Sie es selbst machen können
— siehe

4
Ab GNOME Shell 3.30.1 unter Ubuntu 18.10 und Commandline: "killall -3 gnome-shell" sind die einzigen hier veröffentlichten Lösungen, die funktionieren. Alle anderen werfen den Benutzer zum Anmeldebildschirm und verlieren alle ihre Arbeit.
— C. Rogers

1
Versuchte dies auf Debian Buster. Der Fehler "Neustart ist auf Wayland nicht verfügbar" wird angezeigt.
— Livinston

26

Sie können auch eine killall -3 gnome-shell.


2
Ich weiß nicht, warum die Leute diesen Befehl weiter empfehlen. Alles was dies tut ist Gnom-Shell zu töten. Wie haben Sie die Frage nach einem Neustart beantwortet?
— smac89

1
Wahrscheinlich, weil dies eine gute Lösung ist, bei der der andere Befehl nicht funktioniert. Ich habe beide ausprobiert, der Auserwählte ist gut, hat aber mein Problem nicht gelöst.
— Mitro

2
Ab Ubuntu 18.10 ist GNOME Shell 3.30.1 - DAS IST DIE RICHTIGE LÖSUNG. Bei allen anderen Lösungen wird die Sitzung neu gestartet, und der Benutzer wird auf den Anmeldebildschirm verwiesen. Dadurch geht seine Arbeit verloren.
— C. Rogers

3
SIGQUIT (3) beendet den Prozess nicht
— Jack Wasey

Das schien für mich zu funktionieren. Wobei ich gnome-shell --replace &vorher benutzt habe. Es funktionierte aber, lief weiter im Terminal. Das Problem, das ich hatte, war, dass Youtube-Videos im Vollbildmodus irgendwie dazu führten, dass Dash-to-Dock und das Panel einfroren. github.com/micheleg/dash-to-dock/issues/…
— Natetronn

5

Der Befehl sollte einfach sein gnome-shell --replace.


3
Ab GNOME Shell 3.30.1 unter Ubuntu 18.10 funktioniert diese Lösung nicht mehr. Der Benutzer wird auf den Anmeldebildschirm verwiesen und verliert alle seine Arbeit. Die richtige Lösung lautet jetzt commandline: "killall -3 gnome-shell" oder ALT + f2 und r (falls möglich).
— C. Rogers

funktioniert nicht für eine Remote-Sitzung. Wenn die Gnome-Shell eingefroren ist, funktioniert dies nicht.
— Jack Wasey

5

Für den Fall, dass das Ganze gnome-shelleingefroren ist, gibt es eine Möglichkeit, es vom Terminal aus neu zu starten, ohne das gesamte X-Fenster neu zu starten:

  • Ctrl+ Alt+ F2, um zum Terminal zu wechseln
  • Melden Sie sich mit Ihren Anmeldeinformationen (Benutzername und Passwort) an und führen Sie dann Folgendes aus:
  • DISPLAY=:0 gnome-shell -r &
  • ausloggen exitund
  • Alt+ F1, um zur grafischen Oberfläche von X Window zurückzukehren.

1

Ich habe mir diese Funktion ausgedacht, um Benutzer abzumelden (siehe unten)

Es geht davon aus

  • Sie haben Sudo-Berechtigungen
  • Sie haben Bash
  • Die Benutzer haben 1 laufende X-Sitzung (obwohl Sie in der Lage sein sollten, denselben Abmeldebefehl mehrmals abzusetzen, um verbleibende Sitzungen zu entfernen).

Sie können ihm mehrere Benutzernamen geben:

logout john jane mike elisa

Und Sie können es zusätzliche Optionen geben:

logout john --force

Ich habe also folgende Hilfsfunktion:

function forcelogout() {
    logout "$@" --no-prompt --force
}

Anmerkungen:

  • Dies ist ein stumpfes Instrument und funktioniert, indem nur die gesamte Sitzungsumgebung kopiert wird. Dies könnte selektiver sein.
  • Manchmal scheint das Abmelden eine Weile zu dauern
  • In seltenen Fällen wird die Sitzung so lange gemeldet, bis jemand den virtuellen Computer besucht, auf dem die Sitzung stattgefunden hat, aber nichts mehr vorhanden ist.

CODE

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
}

1

Ich habe einen Alias ​​definiert: alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print \$3}"|grep ":"|head -1)| at now'

Möglicherweise können Sie ein Terminal starten, indem Sie mit der rechten Maustaste auf den Hintergrund klicken und dort eingeben (Alt-Tab ist dann auch nicht korrekt). Wenn nicht, melden Sie sich bei einem Tty mit z. B. Strg-Alt-F2 an und führen Sie es aus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.