Wie starte ich Gnome-shell neu, nachdem es nicht mehr reagiert / eingefroren hat?


123

Manchmal friert meine Gnomschale ein. Ich kann Hintergrundprozesse sehen (hören), die funktionieren (Musik abspielen), aber ich kann in Gnome nichts tun. Nein Alt+ F2+ R.

Ich kann wechseln mit trösten: Ctrl+ Alt+ F1, melden Sie sich als denselben Benutzer und ausführen:

gnome-shell --replace

und zurück Ctrl+ F7, aber dann bekomme ich ein seltsames Verhalten. Zum Beispiel kann ich keine Netzwerkverbindungen bearbeiten. Ich kann mich auch nicht ausloggen. Was ist der richtige Weg, um die Gnome-Shell neu zu starten?


Friert die Gnome-Shell ein, während die Suchfunktion verwendet wird gnome-shell overview, oder bei welcher besonderen Gelegenheit, wenn Sie dies feststellen können?
v2r

1
Nein, es friert nach dem Login (meistens) ein, normalerweise nach dem Abdocken.
jk_

2
Bisher habe ich keine funktionierende Lösung gefunden. Am Ende habe ich diese Problemumgehung .
jk_

Wenn Sie Shell-Erweiterungen von: extensions.gnome.org verwenden, deaktivieren Sie alle und starten Sie neu, um festzustellen, ob eine von ihnen den Fehler verursacht hat. Ich benutze eine ältere Version von Gnome-Shell und hatte aus genau diesem Grund viele Probleme! (Vielleicht ist es einfach so ?!)
v2r

1
Ich habe versucht, alle zu deaktivieren, hatte aber immer noch das Problem :(
jk_

Antworten:


173

Der einfachere Weg ist einfach Alt+ zu drücken F2und rdann zu tippen Enter. Dies funktioniert so lange, wie die Shell verwendbar ist.

Sie können auch SIGQUITan den gnome-shellProzess senden , der nur die Shell beendet:

killall -3 gnome-shell

Andere Methoden verwenden eher destruktive Mittel, die alle Anwendungen schließen, dies sollte jedoch nicht der Fall sein.


3
+1 für den SIGHUPTipp wäre dann aber nicht der richtige Befehl killall -1 gnome-shell? Zumindest laut man 7 signalist der Wert für SIGHUP1. Wert 3 entspricht SIGQUIT. Ich habe den Wert 1 an die Gnome-Shell gesendet und sie wurde wie erwartet sauber neu gestartet.
Chriki

@Chriki ja, es war eindeutig, durch die meisten Signale würde der Gnom-Shell-Prozess enden.
Braiam

Ich habe dies auf Fedora 25 versucht und killall -3 gnome-shellalle Anwendungen für mich beendet.
Comfreak

6
Ich wünschte, wir könnten auch einen Terminal-Befehl verwenden, der genau den gleichen Effekt wie Alt+F2und hat r, dh ohne den gesamten Bildschirm
auszublenden

Ich habe das Problem, dass Gnome auf meinem Ubuntu vm sehr oft abstürzt. Ich musste die VM jedes Mal neu starten, wenn es passierte. In der Lage zu sein, diesen Befehl einzugeben und zu verwenden, löst dieses Problem dank einer Million.
Nathan F.

32
  • Wenn Sie gnome-shell "nett" bitten möchten, sich selbst neu zu starten, können Sie die interne Neustartfunktion über dbus mit dem folgenden Befehl aufrufen (vorausgesetzt, Sie haben DBUS_SESSION_BUS_ADDRESSenv var auf den richtigen Wert gesetzt und führen denselben Benutzer aus):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • Wenn Sie eine neue Instanz ausführen möchten, gnome-shell --replacesollte dies in Ordnung sein. Auf Konsole müssen Sie die notwendigen Umgebungsvariablen wie definieren DISPLAY, DBUS*und so weiter. Beziehen auf/proc/$gnome_shell_pid/environ

  • Wenn Sie eine vorhandene neu starten möchten, killall -HUP gnome-shellwird dies durchgeführt. Wenn Sie dies jedoch zu oft tun, kann es sein, dass Gnome-Shell alle Erweiterungen deaktiviert, Sie zwangsweise abmeldet oder sich auf andere Weise nicht benutzerfreundlich verhält.

Ich habe eine Shell-Funktion erstellt, mit der DBUS_SESSION_BUS_ADDRESS in der Gnome-Shell-Prozessumgebung festgelegt wird (so können Sie logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
sehe

3
Habe den Fehler Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filesohne sudo und Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11mit sudo.
Seanny123

7

Hier ist eine andere Problemumgehung:

  1. Melden Sie sich an einem lokalen Terminal mit CTRL+ ALT+ an F1.
  2. Führen Sie den Befehl aus:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. Kehren Sie zur grafischen Oberfläche zurück, indem Sie CTRL+ ALT+ drücken F7.

PS: Ich benutze lightdm anstelle von gdm3.


1
Einfach und wirkt wie ein Zauber! (Zumindest für mich)
Katai

6

Wenn Sie ubuntu gnome installiert haben, welches Sie haben sollten, verwenden Sie möglicherweise den Gnome-Anzeigemanager. In diesem Fall sollten Sie zu einem anderen TTY wechseln, z. B. Strg + Alt + F4 und dann

sudo service gdm restart

Ich habe kürzlich auch einen Artikel über eine solche Situation geschrieben:

Hilfe, mein Linux Desktop hängt!

Bestes Glück!


6
Seien Sie vorsichtig , ich habe es auf der gleichen TTY und dies töten meine aktuelle Sitzung ..
RousseauAlexandre

dies hat die aktuelle sitzung komplett durcheinander gebracht: es fing an zu blinken und ging dann zum nirvana .. musste neu starten.
Nik O'Lai

5

Da Sie nicht zufrieden sind gnome-shell --replace, können Sie versuchen, den Display Manager selbst neu zu starten.

sudo service lightdm restart

Ich denke, das wird andere Prozesse töten, die Sie ausführen. Siehe auch http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

Wenn Sie ernsthaft mit etwas zu tun haben, das Sie jedes Mal zum Einfrieren bringt, aktivieren Sie den SysRq wie in https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst beschrieben , und geben Sie dann den Befehl, <alt><sysrq/print_screen_key><k>alles auf dem System zu töten Bildschirm.


3
Lighdm neu zu starten funktioniert, aber ich möchte es vermeiden, weil ich alles von Grund auf neu öffnen muss. Besonders wenn ich weiß, dass es ein Problem mit einer Gnome-Shell ist und ein Neustart fast funktioniert.
jk_

Ich kenne keine anderen Methoden, um nur die Gnomschale neu zu regeln. Hast du probiert, ob das DISPLAY=:7 gnome-shell --replacefunktioniert?
Jay Aurabind

1
Nein, ich benutze keine Anzeige, wenn wdie Anzeige anders ist als : 0 . Wenn ich ein falsches Display benutze, erhalte ich eine Fehlermeldung.
jk_

Entschuldigung, ich habe keine Optionen mehr. Sie sollten wahrscheinlich in der Mailing-Liste der Gnome-Benutzer / Entwickler nachfragen. Finden Sie zuerst heraus, warum Sie Anomalien mit dem Gnom haben alt-f2-roder gnome-shell --replacewann dies der empfohlene Weg ist.
Jay Aurabind

Ich bin auch diesem Link gefolgt , um weitere ENV-Variablen einzurichten, aber ich kann die Netzwerkverbindungen immer noch nicht bearbeiten, wenn ich gnome-shell von einem anderen Terminal aus neu starte. Am Ende
komme

2

Manchmal habe ich das gleiche Problem wie Sie, und meine Lösung lautet:

Ctrl+ Alt+ F1, Melden Sie sich als denselben Benutzer und auszuführen:

sudo pkill -9 ^gnome-shell

Und zurück mit Ctrl+ Alt+F7

Ob das der richtige Weg ist, weiß ich nicht. Bei mir funktioniert es immer.


3
Dadurch werden alle Benutzerinstanzen der Gnome-Shell beendet, die Sie in einem Mehrbenutzerszenario möglicherweise nicht ausführen möchten. Normalerweise musst du nur deine eigene töten (pkill -HUP gnome-shell)
Steeve McCauley

3
kill -9 ist ein bisschen destruktiv, denke ich: robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
Robert

toll, es funktioniert bei mir ...! Du rettest meinen Tag. geschätzt.
NomanJaved

2

Starten Sie X neu

  • Finden Sie zuerst mit dem folgenden Befehl heraus, welchen Display-Manager Ihr Ubuntu verwendet:

    cat /etc/X11/default-display-manager
    

    in meinem Fall ist es /usr/sbin/gdm3

    Von innen X oder AUSSEN X

  • Ermitteln Sie für die Methoden 1 bis 4 mithilfe des wBefehls , welche Anzeige Sie verwenden .

    w
    

    Die Antwort kann zum Beispiel lauten tty3(daher ist meine (ack's) Taste "Zurück zu meiner Anzeige" Strg + Alt + F3

Methoden

  1. Strg + Alt + F1 zum Beenden und Strg + Alt + F3 zum Zurückholen
  2. sudo /etc/init.d/gdm3 restart
  3. systemctl restart gdm.service
  4. sudo service gdm3 restart
  5. dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
  6. Eine einfache Möglichkeit ist, einfach Alt + F2 zu rdrücken und dann die Eingabetaste zu drücken. Dies funktioniert solange die Shell nicht unbrauchbar ist.

Methode 5 wird wörtlich aus der Antwort von korc und 6 aus der Antwort von Braiam herausgehoben . Plagiate verstoßen hier nicht gegen die Regeln, aber es ist definitiv nicht cool. Alles, was Sie wirklich tun müssen, ist anzuzeigen, dass die Arbeit nicht Ihre eigene ist, indem Sie sie in Anführungszeichen setzen. Geben Sie die Zuschreibung an, indem Sie einen Link zum Quellpost und einen Link zur Profilseite des Autors einfügen. Weitere Informationen finden Sie in diesem Blog-Beitrag: Namensnennung erforderlich
wjandrea

1
  1. Drücken Sie Strg + Alt + F2, um zu einem Terminalfenster zu wechseln. Manchmal ist das nicht möglich.

  2. Drücken Sie Alt + SysRq + R, um die Tastatur abzurufen.

  3. Wenn das Drücken von Strg + Alt + F2 zuvor fehlgeschlagen ist, versuchen Sie es jetzt erneut.

  4. Drücken Sie Alt + SysRq + E, um alle Prozesse zu beenden.

  5. Drücken Sie Alt + SysRq + I, um alle Prozesse abzubrechen.

  6. Drücken Sie Alt + SysRq + S, um Ihre Festplatten zu synchronisieren.

  7. Warten Sie auf die Meldung OK oder Fertig. Wenn keine Meldung angezeigt wird, überprüfen Sie anhand der Festplattenanzeige, ob die Synchronisierung einen Unterschied bewirkt hat.

  8. Drücken Sie Alt + SysRq + U, um die Bereitstellung aller Laufwerke aufzuheben.

  9. Warten Sie auf die Meldung OK oder Fertig. Wenn innerhalb von 15 bis 30 Sekunden keine Meldung angezeigt wird, gehen Sie davon aus, dass die Datenträger nicht bereitgestellt wurden (oder dass die Bereitstellung nicht möglich ist), und fahren Sie fort.

  10. Drücken Sie Alt + SysRq + B, um den Computer neu zu starten.


0

kill -15 gnome-shellfunktioniert bei mir nicht aber doch kill -9. Ich denke, es liegt daran, dass kill -9ein Segfault ausgelöst wird, der bewirkt, dass sich die Gnome-Shell selbst neu kill -15startet , dies jedoch nicht.


2
kill -9Löst keinen Segfault aus. Es sendet SIGKILL, ein nicht einfangbares Signal, für das die einzige Aktion darin besteht, sofort zu beenden. Es sollte nur verwendet werden, wenn die Anwendung nicht auf SIGTERM reagiert, das ist 15.
muru

pkill -11 gnome-shellwürde einen Segfault auslösen, da dies buchstäblich das ist, was Signal 11 tut. BTW, killbraucht eine Prozess - ID, nicht ein Prozessname. Meinten Sie pkilloder killall?
TSJNachos117
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.