当前位置: 首页>>技术问答>>正文


如何重启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

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

次佳解决方法

  • 如果你想让”nicely”到gnome-shell重新启动它,那么你可以通过dbus通过以下命令调用它的内部重启功能(假设你将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可能会禁用所有扩展,强制注销你或以non-userfriendly方式行事。

第三种解决方法

由于您对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中提到的SysRq,然后让<alt><sysrq/print_screen_key><k>杀死屏幕上的任何内容。

第四种方法

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

  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

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

Help, my Linux Desktop hangs!

好运!

第六种方法

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

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,然后按Enter键。这将工作很长时间shell不可用。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1128.html,未经允许,请勿转载。