Comment redémarrer Gnome-shell, après qu'il soit devenu insensible / freeze?

123

Parfois, ma coquille de gnome se fige. Je peux voir (entendre) les processus d'arrière-plan fonctionner (jouer de la musique), mais je ne peux rien faire dans Gnome. Non Alt+ F2+ R.

Je peux passer à la console en utilisant: Ctrl+ Alt+ F1, vous connecter en tant que même utilisateur et exécuter:

gnome-shell --replace

et revenir en arrière Ctrl+ F7, mais alors, je reçois un comportement étrange. Par exemple, je ne peux pas modifier les connexions réseau. Je ne peux pas me déconnecter aussi. Quelle est la bonne façon de redémarrer le gnome-shell?

jk_
la source
Est-ce que gnome-shell se bloque lors de l'utilisation de la fonction de recherche dans gnome-shell overview, ou à quelle occasion particulière, si vous pouvez le dire?
v2r
1
Non, il se fige après la connexion (généralement), généralement après la déconnexion.
jk_
2
Jusqu'à présent, je n'ai pas trouvé de solution efficace. En fin de compte, je me retrouve avec cette solution de contournement .
jk_
Si vous utilisez des extensions de shell à partir de: extensions.gnome.org, désactivez-les toutes et redémarrez-les pour voir si l’un d’eux a posé problème. J'utilise une version plus ancienne de gnome-shell et j'ai eu beaucoup de problèmes dus à cette cause! (Peut-être que c'est aussi simple que ça?!)
v2r
1
J'ai essayé de tous les désactiver, ayant toujours le problème :(
jk_

Réponses:

173

Le moyen le plus simple consiste simplement à appuyer sur Alt+ F2, rpuis tapez Enter. Cela fonctionnera si longtemps que la coque est utilisable.

Vous pouvez également envoyer SIGQUITau gnome-shellprocessus qui ne terminera que le shell:

killall -3 gnome-shell

D'autres méthodes utilisent des moyens plus destructeurs, qui ferment toutes les applications, cela ne devrait pas.

Braiam
la source
3
+1 pour le SIGHUPpourboire, cependant, la commande correcte ne serait-elle pas alors killall -1 gnome-shell? Au moins selon man 7 signal, la valeur de SIGHUPest 1. La valeur 3 correspond à SIGQUIT. J'ai envoyé la valeur 1 au shell Gnome et celui-ci a été redémarré proprement comme prévu.
Chriki
@Chriki ouais, c'était sigquit, la plupart des signaux feraient cesser le processus gnome-shell.
Braiam
J'ai essayé ceci sur Fedora 25 et a killall -3 gnome-shellabouti à tuer toutes les applications pour moi.
Comfreak
6
J'aimerais que nous puissions aussi utiliser une commande de terminal ayant exactement le même effet que Alt+F2et r, c'est-à-dire sans effacer tout l'écran ...
Sadi le
Je rencontre souvent le problème de gnome qui tombe en panne sur mon Ubuntu vm, je devais redémarrer la VM chaque fois que cela se produisait. Le fait de pouvoir utiliser ssh et cette commande résout ce problème, merci mille fois.
Nathan F.
32
  • Si vous voulez demander "gentiment" à gnome-shell de redémarrer lui-même, vous pouvez appeler sa fonction de redémarrage interne via dbus avec la commande suivante (en supposant que votre DBUS_SESSION_BUS_ADDRESSvariable var est définie sur la valeur correcte et s'exécute sous le même utilisateur):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • Si vous voulez exécuter une nouvelle instance, tout gnome-shell --replacedevrait bien se passer. Sur la console, vous devez définir les variables d’environnement nécessaires, telles que DISPLAY, DBUS*etc. Faire référence à/proc/$gnome_shell_pid/environ

  • Si vous voulez redémarrer un existant, alors le killall -HUP gnome-shellfera. Cependant, si vous le faites trop souvent, gnome-shell peut désactiver toutes les extensions, vous déconnecter de force ou vous comporter d'une autre manière non conviviale.
korc
la source
J'ai créé une fonction shell qui l'DBUS_SESSION_BUS_ADDRESS de l'environnement de processus shell gnome (vous pouvez logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
sehe
3
Vous avez l'erreur Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filessans sudo et Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11avec sudo.
Seanny123
7

Voici une solution de contournement différente:

  1. Connectez-vous à un terminal local en appuyant sur CTRL+ ALT+ F1.
  2. Exécutez la commande:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. Revenez à l'interface graphique en appuyant sur CTRL+ ALT+ F7.

PS: J'utilise lightdm au lieu de gdm3.

masina
la source
1
Simple et fonctionne comme un charme! (Au moins pour moi)
Katai
6

Si vous avez installé ubuntu gnome, vous devriez peut-être utiliser le gestionnaire d’affichage gnome. Dans ce cas, vous devriez passer à un autre TTY, comme Ctrl + Alt + F4, puis

sudo service gdm restart

J'ai aussi écrit un article sur une telle situation récemment:

Aide, mon bureau Linux se bloque!

Bonne chance!

Gerhard Stein
la source
6
attention , je l'ai fait sur le même ATS et cela tue ma session en cours ..
RousseauAlexandre
cela a complètement foutu en l'air la session en cours: il a commencé à clignoter puis est allé au nirvana .. a dû redémarrer.
Nik O'Lai
5

Puisque vous n'êtes pas satisfait gnome-shell --replace, vous pouvez essayer de redémarrer le gestionnaire d'affichage lui-même.

sudo service lightdm restart

Je pense que cela va tuer d'autres processus que vous exécutez. Voir aussi http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

Si vous aimez sérieusement quelque chose qui vous fait geler à chaque fois, activez le SysRq comme indiqué dans https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst , puis donnez le droit <alt><sysrq/print_screen_key><k>de tuer tout ce qui est sur le écran.

Jay Aurabind
la source
3
Redémarrer lighdm fonctionne, mais je veux l’éviter, car je dois tout rouvrir à partir de rien. Surtout si je sais que c'est un problème de shell Gnome et que le redémarrer fonctionne presque .
jk_
Je ne suis pas au courant d'autres méthodes pour restrat juste la coquille de gnome. Avez-vous essayé si cela DISPLAY=:7 gnome-shell --replacefonctionne?
Jay Aurabind
1
Non, ce n'est pas le cas, j'utilise l'affichage, lorsque l' waffichage est différent de : 0 . Si j'utilise un mauvais affichage, j'obtiens une erreur.
jk_
Désolé, je n'ai plus d'options. Vous devriez probablement demander dans la liste de diffusion gnome utilisateur / développeur. D'abord, essayez de comprendre pourquoi vous avez des anomalies avec alt-f2-rou gnome-shell --replacequand c'est la méthode recommandée par le gnome.
Jay Aurabind
Moi aussi. J'ai même suivi ce lien en configurant plus de variables ENV, mais je ne peux toujours pas éditer les connexions réseau lors du redémarrage de gnome-shell depuis un autre terminal. Finalement, je me retrouve avec cette astuce
jk_
2

J'ai parfois le même problème que vous décrivez, et ma solution est la suivante:

Ctrl+ Alt+ F1, connectez-vous en tant que même utilisateur et exécutez:

sudo pkill -9 ^gnome-shell

Et revenez avec Ctrl+ Alt+F7

Si c'est la bonne façon, je ne sais pas. Pour moi, ça marche à chaque fois.

landas
la source
3
Cela supprimera toutes les instances d'utilisateurs de gnome-shell, ce que vous ne voudrez peut-être pas faire dans un scénario multi-utilisateur. Normalement, vous ne devez tuer que le vôtre (pkill -HUP gnome-shell)
Steeve McCauley
3
kill -9 est un peu destructeur, je pense: robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
Robert
super ça marche pour moi ...! tu sauves ma journée. apprécié.
NomanJaved
2

Redémarrez X

  • Recherchez d’abord le gestionnaire d’affichage utilisé par votre Ubuntu avec la commande suivante:

    cat /etc/X11/default-display-manager
    

    dans mon cas c'est /usr/sbin/gdm3

    De l'intérieur X ou de l'extérieur X

  • Pour les méthodes 1 à 4, recherchez l'écran que vous utilisez à l'aide de la wcommande.

    w
    

    la réponse peut être, par exemple tty3, la touche "retour à mon affichage" est donc Ctrl + Alt + F3

Les méthodes

  1. Ctrl + Alt + F1 pour quitter, et Ctrl + Alt + F3 pour en ramener un
  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. Un moyen simple consiste à appuyer sur Alt + F2, puis tapez rpuis appuyez sur Entrée. Cela fonctionnera si longtemps que le shell n'est pas inutilisable.
markackerman8-gmail.com
la source
La méthode 5 est extraite textuellement de la réponse de korc et 6 de la réponse de Braiam . Le plagiat n'est pas contre les règles ici, mais ce n'est certainement pas cool. Il vous suffit d'indiquer que le travail n'est pas le vôtre en le mettant entre guillemets et de l'attribuer en incluant un lien vers le message source et un lien vers la page de profil de l'auteur. Pour plus de détails, voir ce billet de blog: Attribution Required
wjandrea
1
  1. Appuyez sur Ctrl + Alt + F2 pour basculer vers une fenêtre de terminal. Parfois, ce n'est pas possible.

  2. Appuyez sur Alt + SysRq + R pour obtenir le clavier.

  3. Si vous avez appuyé sur Ctrl + Alt + F2 avant d’échouer, essayez à nouveau maintenant.

  4. Appuyez sur Alt + SysRq + E pour mettre fin à tous les processus.

  5. Appuyez sur Alt + SysRq + I pour tuer tous les processus.

  6. Appuyez sur Alt + SysRq + S pour synchroniser vos disques.

  7. Attendez le message OK ou Terminé. Si vous ne voyez pas de message, examinez le voyant de votre disque dur pour voir si Sync a fait une différence.

  8. Appuyez sur Alt + SysRq + U pour démonter tous les lecteurs de disque.

  9. Attendez le message OK ou Terminé. Si vous ne voyez pas de message dans 15 à 30 secondes, supposez que les disques sont démontés (ou qu’un démontage n’est pas possible) et continuez.

  10. Appuyez sur Alt + SysRq + B pour redémarrer.

Dylan Certain
la source
0

kill -15 gnome-shellne fonctionne pas pour moi mais kill -9fait. Je pense que c’est parce qu’il kill -9déclenche un segfault qui déclenche le redémarrage de gnome-shell, alors que ce kill -15n’est pas le cas.

Walter
la source
2
kill -9ne déclenche pas de segfault. Il envoie SIGKILL, un signal non joignable pour lequel la seule action consiste à quitter immédiatement. Il ne devrait être utilisé que lorsque l'application ne répond pas à SIGTERM, qui est 15.
muru
pkill -11 gnome-shelldéclencherait une erreur de segmentation, puisque c’est littéralement ce que le signal 11 fait. BTW killnécessite un ID de processus, PAS un nom de processus. Vouliez-vous dire pkillou killall?
TSJNachos117