Come riavviare Gnome-shell, dopo che non ha risposto / bloccato?


123

A volte, il mio gnome-shell si blocca. Riesco a vedere (ascoltare) i processi in background che funzionano (suonare musica), ma non posso fare nulla in Gnome. No Alt+ F2+ R.

Posso passare alla console utilizzando: Ctrl+ Alt+ F1, accedi come lo stesso utente ed eseguo:

gnome-shell --replace

e torno indietro Ctrl+ F7, ma poi ho uno strano comportamento. Ad esempio, non riesco a modificare le connessioni di rete. Non riesco nemmeno a disconnettermi. Qual è il modo corretto di riavviare gnome-shell?


Gnome-shell si blocca durante l'utilizzo della funzione di ricerca in gnome-shell overview, o in quale particolare occasione, se puoi dirlo?
v2r

1
No, si blocca dopo l'accesso (principalmente), di solito dopo lo sganciamento.
jk_

2
Finora non ho trovato una soluzione funzionante. Alla fine, finisco con questa soluzione alternativa .
jk_

Se si utilizzano estensioni della shell da: extensions.gnome.org, disattivarle tutte e riavviare, per vedere se una di esse ha causato il problema. Uso una versione precedente di gnome-shell e ho avuto molti problemi a causa di quella causa esatta! (Forse è così semplice ?!)
v2r

1
Ho provato a disattivarli tutti, avendo ancora il problema :(
jk_

Risposte:


173

Il modo più semplice è semplicemente premendo Alt+ F2, rquindi digitare Enter. Funzionerà così a lungo che la shell sarà utilizzabile.

Puoi anche inviare SIGQUITal gnome-shellprocesso che terminerà solo la shell:

killall -3 gnome-shell

Altri metodi usano mezzi più distruttivi, che chiudono tutte le applicazioni, questo non dovrebbe.


3
+1 per il SIGHUPsuggerimento, tuttavia, non sarebbe il comando corretto killall -1 gnome-shell? Almeno secondo man 7 signal, il valore per SIGHUPè 1. Il valore 3 corrisponde a SIGQUIT. Ho inviato il valore 1 a Gnome Shell ed è stato riavviato correttamente come previsto.
Chriki,

@Chriki sì, era sigquit, attraverso la maggior parte dei segnali avrebbe fatto finire il processo gnome-shell.
Braiam,

Ho provato questo su Fedora 25 e ho killall -3 gnome-shellprovocato l'uccisione di tutte le applicazioni per me.
comfreak,

6
Vorrei che potessimo anche usare un comando terminale con esattamente lo stesso effetto di Alt+F2e r, cioè senza oscurare l'intero schermo ...
Sadi,

Mi imbatto nel problema di gnome che si blocca molto sul mio Ubuntu VM, dovevo riavviare la VM ogni volta che è successo. Essere in grado di inserire e utilizzare questo comando risolve questo problema, grazie a un milione.
Nathan F.

32
  • Se vuoi chiedere "bene" a gnome-shell di riavviarsi da solo, puoi chiamare la sua funzione di riavvio interno su dbus con il seguente comando (supponendo che tu abbia DBUS_SESSION_BUS_ADDRESSimpostato var env sul valore corretto ed eseguito come lo stesso utente):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • Se si desidera eseguire una nuova istanza, gnome-shell --replacedovrebbe andare bene. Su console è necessario definire le variabili d'ambiente necessarie come DISPLAY, DBUS*e così via. Fare riferimento a/proc/$gnome_shell_pid/environ

  • Se vuoi riavviare quello esistente, killall -HUP gnome-shelllo farà. Se lo fai troppo spesso, gnome-shell potrebbe disabilitare tutte le estensioni, disconnetterti forzatamente o comportarsi in altro modo in modo non intuitivo.

Ho creato una funzione shell che imposta DBUS_SESSION_BUS_ADDRESS dall'ambiente di processo gnome-shell (così puoi logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
vedi il

3
Ottenuto l'errore Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filessenza sudo e Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11con sudo.
Seanny123,

7

Ecco una soluzione alternativa:

  1. Accedi a un terminale locale premendo CTRL+ ALT+ F1.
  2. Esegui il comando:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. Tornare all'interfaccia grafica premendo CTRL+ ALT+ F7.

PS: sto usando lightdm invece di gdm3.


1
Semplice e funziona come un fascino! (Almeno per me)
Katai,

6

Se hai installato Ubuntu GNOME, che dovresti avere, potresti usare il display manager di GNOME. In tal caso, dovresti passare a un altro TTY, come Ctrl + Alt + F4 e quindi

sudo service gdm restart

Di recente ho anche scritto un articolo su tale situazione:

Aiuto, il mio desktop Linux si blocca!

Buona fortuna!


6
attenzione , l'ho fatto sullo stesso TTY e questo ha ucciso la mia sessione attuale ..
RousseauAlexandre

questo ha completamente rovinato la sessione attuale: ha iniziato a lampeggiare e poi è andato in nirvana .. ha dovuto riavviare.
Nik O'Lai,

5

Dato che non sei soddisfatto gnome-shell --replace, potresti provare a riavviare il display manager stesso.

sudo service lightdm restart

Penso che ucciderà altri processi che stai eseguendo. Vedi anche http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

Se sei seriamente interessato a qualcosa che ti fa congelare ogni volta, abilita il SysRq come menzionato in https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst , e poi dai <alt><sysrq/print_screen_key><k>a uccidere qualunque cosa ci sia sul schermo.


3
Il riavvio di lighdm funziona, ma voglio evitarlo, perché devo riaprire tutto da zero. Soprattutto se so che è un problema di una shell Gnome e il riavvio funziona quasi .
jk_

Non sono a conoscenza di altri metodi per restringere solo la shell di gnome. Hai provato se DISPLAY=:7 gnome-shell --replacefunziona?
Jay Aurabind,

1
No, non lo uso, io uso display, quando wmostra display diversi da : 0 . Se utilizzo un display errato, visualizzo un errore.
jk_

Siamo spiacenti, non ho opzioni. Probabilmente dovresti chiedere nella mailing list degli utenti / sviluppatori di gnome. Prima di tutto scopri perché hai delle anomalie con alt-f2-ro gnome-shell --replacequando è il modo raccomandato dallo gnomo.
Jay Aurabind,

Anch'io. Ho anche seguito questo collegamento impostando più variabili ENV, ma non riesco ancora a modificare le connessioni di rete quando riavvio gnome-shell da un terminale diverso. Alla fine,
finisco

2

A volte ho lo stesso problema che descrivi e la mia soluzione è:

Ctrl+ Alt+ F1, accedi come lo stesso utente ed esegui:

sudo pkill -9 ^gnome-shell

E torna indietro con Ctrl+ Alt+F7

Se questo è il modo corretto, non lo so. Per me funziona sempre.


3
Questo ucciderà tutte le istanze di gnome-shell degli utenti che potrebbero non essere qualcosa che vuoi fare in uno scenario multiutente. Normalmente devi solo uccidere il tuo (pkill -HUP gnome-shell)
Steeve McCauley

3
uccidere -9 è un po 'distruttivo, penso: robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
Robert

fantastico funziona per me ...! mi salvi la giornata. apprezzato.
NomanJaved

2

Riavvia X

  • Per prima cosa scopri quale display manager sta utilizzando Ubuntu con il seguente comando:

    cat /etc/X11/default-display-manager
    

    nel mio caso lo è /usr/sbin/gdm3

    Dall'interno X o ESTERNO X

  • Per i metodi da 1 a 4, scopri quale display stai usando usando il wcomando.

    w
    

    la risposta potrebbe essere, ad esempio tty3, (quindi il mio tasto "torna al mio display" è Ctrl + Alt + F3

metodi

  1. Ctrl + Alt + F1 per uscire e Ctrl + Alt + F3 per riportarne uno indietro
  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 modo semplice è semplicemente premendo Alt + F2, e digitare rquindi premere Invio. Funzionerà così a lungo che la shell non è inutilizzabile.

Il metodo 5 è sollevato alla lettera dalla risposta di Korc e 6 dalla risposta di Braiam . Il plagio non è contro le regole qui, ma sicuramente non è bello. Tutto quello che devi fare è indicare che il lavoro non è tuo inserendolo tra virgolette e dai l'attribuzione includendo un link al post di origine e un link alla pagina del profilo dell'autore. Per maggiori dettagli, vedi questo post sul blog: Attribution Required
wjandrea

1
  1. Premi Ctrl + Alt + F2 per passare a una finestra del terminale. A volte, questo non è possibile.

  2. Premi Alt + SysRq + R per ottenere la tastiera.

  3. Se premendo Ctrl + Alt + F2 prima non è riuscito, riprovare ora.

  4. Premi Alt + SysRq + E per terminare tutti i processi.

  5. Premi Alt + SysRq + I per terminare tutti i processi.

  6. Premi Alt + SysRq + S per sincronizzare i tuoi dischi.

  7. Attendere il messaggio OK o Fine. Se non vedi un messaggio, guarda la tua luce HDD per vedere se la sincronizzazione ha fatto la differenza.

  8. Premi Alt + SysRq + U per smontare tutte le unità disco.

  9. Attendere il messaggio OK o Fine. Se non vedi un messaggio entro 15-30 secondi, supponi che i dischi siano smontati (o che uno smontaggio non sia possibile) e procedi.

  10. Premi Alt + SysRq + B per riavviare.


0

kill -15 gnome-shellnon funziona per me ma lo kill -9fa. Penso che sia perché kill -9innesca un segfault che innesca gnome-shell per riavviarsi, mentre kill -15non lo fa.


2
kill -9non innesca un segfault. Invia SIGKILL, un segnale irraggiungibile per il quale l'unica azione è quella di uscire immediatamente. Dovrebbe essere usato solo quando l'applicazione non risponde a SIGTERM, che è 15.
muru

pkill -11 gnome-shellinnescerebbe un segfault, poiché è letteralmente ciò che fa il segnale 11. A proposito, ha killbisogno di un ID processo, NON di un nome processo. Intendevi pkillo killall?
TSJNachos117,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.