如何在无响应/冻结后重启Gnome-shell?

有时,我的gnome-shell会冻结。 我可以看到(听到)后台进程正常工作(播放音乐),但我无法在gnome中做任何事情。 没有Alt + F2 + R.

我可以使用以下方式切换到控制台: Ctrl + Alt + F1 ,以同一用户身份登录并执行:

gnome-shell --replace 

并返回Ctrl + F7 ,但随后,我得到一个奇怪的行为。 例如,我无法编辑网络连接。 我也无法退出。 重启gnome-shell的正确方法是什么?

更简单的方法是按Alt + F2 ,输入“r”然后按Enter键 。 这将工作很长时间shell不可用。

您还可以将SIGQUIT发送到gnome-shell进程,该进程将仅终止shell:

 killall -3 gnome-shell 

其他方法使用更具破坏性的方法,关闭所有应用程序,这不应该。

  • 如果你想“很好地”请求gnome-shell重新启动它,那么你可以通过dbus用以下命令调用它的内部重启function(假设你将DBUS_SESSION_BUS_ADDRESS env var设置为正确的值并以同一用户身份运行):

     dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()' 
  • 如果你想运行一个新实例, gnome-shell --replace应该可以。 在控制台上,您需要定义必要的环境变量,如DISPLAYDBUS*等。 请参阅/proc/$gnome_shell_pid/environ

  • 如果你想重新启动现有的,那么killall -HUP gnome-shell就可以了。 如果你经常这样做,gnome-shell可能会禁用所有扩展,强行注销你或以非用户友好的方式行事。

由于您对gnome-shell --replace不满意,您可能想尝试重新启动显示管理器本身。

 sudo service lightdm restart 

我认为这会杀死你正在运行的其他进程。 另请参阅http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

如果您认真对待每次都冻结的内容,请按照https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst中的说明启用S​​ysRq,然后提供杀死屏幕上的任何内容。

我遇到了同样的问题,我发现了一个不同的解决方法:

  1. 按CTRL + ALT + F1登录本地终端
  2. 运行命令:sudo kill -HUP`pidof gnome-shell`
  3. 按CTRL + ALT + F7返回图形界面

PS:我使用的是lightdm而不是gdm3。

如果您已经安装了ubuntu gnome,那么您可能正在使用gnome显示管理器。 在这种情况下,您应该更改为另一个TTY,如Ctrl + Alt + F4然后

 sudo service gdm restart 

我最近还写了一篇关于这种情况的文章:

帮助,我的Linux桌面挂起了!

好运!

我有时会遇到和你描述的问题相同的问题,我的解决方案是:

Ctrl + Alt + F1 ,以同一用户身份登录并执行:

 sudo pkill -9 ^gnome-shell 

然后按Ctrl + Alt + F7返回

如果这是正确的方式,我不知道。 对我来说,它每次都有效。

重启X.

  • 首先使用以下命令查找Ubuntu正在使用的显示管理器:

     cat /etc/X11/default-display-manager 

    在我的情况下,它是/usr/sbin/gdm3

    从X内部或外部X

对于方法1到4

  • 使用w命令找出您正在使用的显示器。

      w 

    答案可能是例如tty3 ,(因此我的(ack’s)“返回我的显示器”键是Ctl + Alt + F3

方法1

‣Ctl+ Alt + F1退出,Ctl + Alt + F3退一步

方法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

一种简单的方法是按Alt + F2,然后输入r然后按回车键。 这将工作很长时间shell不可用。

kill -15 gnome-shell对我不起作用但kill -9会起作用。 我认为这是因为kill -9触发了一个段错误,它会触发gnome-shell自行重启,而kill -15却没有。