Como reiniciar o Gnome-shell, depois que ele ficou sem resposta / congelou?


123

Às vezes, minha casca de gnomo congela. Eu posso ver (ouvir) processos em segundo plano funcionando (tocando música), mas não posso fazer nada no gnome. Não Alt+ F2+ R.

Posso mudar para o console usando: Ctrl+ Alt+ F1, faça o login como o mesmo usuário e execute:

gnome-shell --replace

e volto Ctrl+ F7, mas, então, recebo um comportamento estranho. Por exemplo, não consigo editar conexões de rede. Não consigo sair também. Qual é a maneira correta de reiniciar o gnome-shell?


O gnome-shell congela ao usar a função de pesquisa em gnome-shell overview, ou em que ocasião específica, se você pode perceber?
v2r

11
Não, ele congela após o login (principalmente), geralmente após o desencaixe.
Jk_ 27/04

2
Até agora, não encontrei uma solução funcional. No final, acabo com essa solução alternativa .
Jk_

Se você usar quaisquer extensões de shell de: extensions.gnome.org, desative todos eles e reinicie, para ver se um deles causou o problema. Eu uso uma versão mais antiga do gnome-shell e tive muitos problemas devido a essa causa exata! (Talvez seja tão simples como isso ?!)
V2R

11
Tentei desativar todos eles, ainda com o problema :(
jk_ 5/14

Respostas:


173

A maneira mais fácil é apenas pressionar Alt+ F2, digite rentão Enter. Isso funcionará enquanto o shell for utilizável.

Você também pode enviar SIGQUITpara o gnome-shellprocesso que encerrará apenas o shell:

killall -3 gnome-shell

Outros métodos usam meios mais destrutivos, que fecham todos os aplicativos, isso não deveria.


3
+1 para a SIGHUPdica, no entanto, o comando correto não seria killall -1 gnome-shell? Pelo menos de acordo com man 7 signal, o valor para SIGHUPé 1. O valor 3 corresponde a SIGQUIT. Enviei o valor 1 para o Gnome Shell e ele foi reiniciado corretamente conforme o esperado.
precisa saber é o seguinte

@ Chrisiki, sim, era sigquit, através da maioria dos sinais faria o processo gnome-shell terminar.
Braiam

Eu tentei isso no Fedora 25 e killall -3 gnome-shellresultou na morte de todos os aplicativos para mim.
Comfreak #

6
Eu gostaria que também poderia usar um comando terminal de ter exatamente o mesmo efeito que Alt+F2e r, ou seja, sem limpar o ecrã inteiro ...
Sadi

Eu me deparei com a questão do gnome travando bastante no ubuntu vm, estava tendo que reiniciar a VM toda vez que isso acontecia. A capacidade de usar o ssh e usar esse comando resolve esse problema, graças a um milhão.
Nathan F.

32
  • Se você deseja pedir "gentilmente" ao gnome-shell para reiniciar, então você pode chamar sua função de reinício interno através do dbus com o seguinte comando (assumindo que você tenha DBUS_SESSION_BUS_ADDRESSenv var definido com o valor correto e execute o mesmo usuário):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • Se você deseja executar uma nova instância, gnome-shell --replacedeve funcionar bem. No console, você precisa definir as variáveis ​​de ambiente necessárias DISPLAY, DBUS*como etc. Referir-se/proc/$gnome_shell_pid/environ

  • Se você deseja reiniciar o existente, o killall -HUP gnome-shellfará. Se você fizer isso com muita frequência, o gnome-shell pode desativar todas as extensões, desconectá-lo à força ou se comportar de maneira não amigável.

Eu criei uma função shell que define o DBUS_SESSION_BUS_ADDRESS do ambiente processo gnome-shell (assim você pode logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
sehe

3
Obteve o erro Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filessem o sudo e Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11com o sudo.
Seanny123

7

Aqui está uma solução alternativa diferente:

  1. Faça o login em um terminal local pressionando CTRL+ ALT+ F1.
  2. Execute o comando:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. Volte à interface gráfica pressionando CTRL+ ALT+ F7.

PS: Estou usando o lightdm em vez do gdm3.


11
Simples e funciona como um encanto! (Pelo menos para mim)
Katai

6

Se você instalou o ubuntu gnome, o que deveria ter, pode estar usando o gerenciador de exibição do gnome. Nesse caso, você deve mudar para outro TTY, como Ctrl + Alt + F4 e, em seguida,

sudo service gdm restart

Também escrevi um artigo sobre essa situação recentemente:

Ajuda, meu desktop Linux trava!

Boa sorte!


6
ter cuidado , eu fiz isso no mesmo TTY e isso mata minha sessão actual ..
RousseauAlexandre

isso estragou completamente a sessão atual: começou a piscar e depois foi para o nirvana .. teve que reiniciar.
Nik O'Lai

5

Como você não está satisfeito gnome-shell --replace, tente reiniciar o próprio gerenciador de telas.

sudo service lightdm restart

Eu acho que isso matará outros processos que você está executando. Consulte também http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

Se você estiver realmente interessado em algo que o faça congelar sempre, ative o SysRq conforme mencionado em https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst e, em seguida, dê <alt><sysrq/print_screen_key><k>para matar o que quer que esteja lá no tela.


3
Reiniciar o lighdm funciona, mas quero evitá-lo, porque preciso reabrir tudo do zero. Especialmente se eu sei que é problema de um shell Gnome e reiniciá-lo quase funciona.
Jk_25

Não conheço outros métodos para reestruturar apenas o shell do gnomo. Você tentou se DISPLAY=:7 gnome-shell --replacefunciona?
Jay Aurabind

11
Não, não, uso o display quando os wshows são diferentes de : 0 . Se eu usar uma tela errada, recebo um erro.
jk_

Desculpe, estou sem opções. Você provavelmente deve perguntar na lista de discussão de usuários / desenvolvedores do gnome. Primeiro, descubra por que você tem anormalidades alt-f2-rou gnome-shell --replacequando é a maneira recomendada pelo gnomo.
Jay Aurabind

Eu também. Eu segui esse link configurando mais variáveis ​​ENV, mas ainda não consigo editar as conexões de rede ao reiniciar o gnome-shell de um terminal diferente. No final, eu acabar com esse truque
jk_

2

Às vezes, tenho o mesmo problema que você descreve e minha solução é:

Ctrl+ Alt+ F1, faça o login como o mesmo usuário e execute:

sudo pkill -9 ^gnome-shell

E volte com Ctrl+ Alt+F7

Se esse é o caminho certo, eu não sei. Para mim, funciona sempre.


3
Isso matará todas as instâncias de usuários do gnome-shell, que podem não ser algo que você deseja fazer em um cenário multiusuário. Normalmente, você só tem que matar o seu próprio (pkill -HUP gnome-shell)
Steeve McCauley

3
kill -9 é um pouco destrutiva eu penso: robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
Robert

ótimo funciona para mim ...! Você salva meu dia. estimado.
NomanJaved

2

Reinicie o X

  • Primeiro encontre qual gerenciador de exibição seu Ubuntu está usando com o seguinte comando:

    cat /etc/X11/default-display-manager
    

    no meu caso é /usr/sbin/gdm3

    De dentro do X ou fora do X

  • Para os métodos 1 a 4, descubra qual exibição você está usando usando o wcomando

    w
    

    a resposta pode ser, por exemplo tty3, (portanto, a tecla "retornar à minha exibição" (Ck) é Ctrl + Alt + F3

Métodos

  1. Ctrl + Alt + F1 para sair e Ctrl + Alt + F3 para trazer um de volta
  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. Uma maneira fácil é apenas pressionar Alt + F2 e digite re pressione Enter. Isso funcionará por tanto tempo que o shell não será inutilizável.

O método 5 é retirado literalmente da resposta de korc e 6 da resposta de Braiam . O plágio não é contra as regras aqui, mas definitivamente não é legal. Tudo o que você realmente precisa fazer é indicar que o trabalho não é seu, colocando-o entre aspas e atribuí-lo incluindo um link para a postagem de origem e um link para a página de perfil do autor. Para obter mais detalhes, consulte esta publicação no blog: Atribuição necessária
wjandrea

1
  1. Pressione Ctrl + Alt + F2 para alternar para uma janela do terminal. Às vezes, isso não é possível.

  2. Pressione Alt + SysRq + R para obter o teclado.

  3. Se pressionar Ctrl + Alt + F2 antes da falha, tente novamente agora.

  4. Pressione Alt + SysRq + E para finalizar todos os processos.

  5. Pressione Alt + SysRq + I para matar todos os processos.

  6. Pressione Alt + SysRq + S para sincronizar seus discos.

  7. Aguarde a mensagem OK ou Concluído. Se você não vir uma mensagem, observe a luz do seu HDD para ver se a sincronização fez alguma diferença.

  8. Pressione Alt + SysRq + U para desmontar todas as unidades de disco.

  9. Aguarde a mensagem OK ou Concluído. Se você não vir uma mensagem em 15 a 30 segundos, assuma que os discos estão desmontados (ou que não é possível desmontar) e prossiga.

  10. Pressione Alt + SysRq + B para reiniciar.


0

kill -15 gnome-shellnão funciona para mim, mas kill -9funciona. Eu acho que é porque kill -9aciona um segfault que aciona o gnome-shell para reiniciar a si mesmo, enquanto kill -15não.


2
kill -9não dispara um segfault. Ele envia o SIGKILL, um sinal inacessível para o qual a única ação é sair imediatamente. Ele só deve ser usado quando o aplicativo não responde a SIGTERM, que é 15.
Muru

pkill -11 gnome-shellacionaria um segfault, já que é literalmente o que o sinal 11 faz. BTW, killprecisa de um ID do processo, NÃO de um nome do processo. Você quis dizer pkillou killall?
TSJNachos117
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.