在 GNOME Shell 冻结或无响应后,如何重新启动它?

jk_*_*jk_ 152 gnome freeze gnome-shell

有时,我的 GNOME Shell 会死机。我可以看到(听到)后台进程在工作(播放音乐),但在 GNOME 中我什么也做不了。没有Alt+F2后跟REnter

我可以切换使用安慰:Ctrl+ Alt+ F1,登录以相同用户并执行:

gnome-shell --replace
Run Code Online (Sandbox Code Playgroud)

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

Bra*_*iam 218

更简单的方法是按Alt+ F2r然后输入Enter。只要外壳可用,这将起作用。

您还可以发送SIGQUITgnome-shell仅终止 shell的进程:

killall -3 gnome-shell
Run Code Online (Sandbox Code Playgroud)

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

  • 我希望我们也可以使用具有与`Alt+F2` 和`r` 完全相同效果的终端命令,即不消隐整个屏幕... (8认同)
  • 然而,对于`SIGHUP`提示+1,那么正确的命令不是`killall -1 gnome-shell`吗?至少根据[`man 7 signal`](http://manpages.ubuntu.com/manpages/trusty/man7/signal.7.html),`SIGHUP`的值为1,值为3对应`SIGQUIT `. 我已将值 1 发送到 Gnome Shell,它已按预期干净地重新启动。 (5认同)
  • 我在 Fedora 25 上尝试了这个,并且 `killall -3 gnome-shell` 导致我杀死了所有应用程序。 (3认同)

小智 43

  • 如果您想“很好地”要求 gnome-shell 重新启动它自己,那么您可以使用以下命令通过 dbus 调用它的内部重新启动功能(假设您已将DBUS_SESSION_BUS_ADDRESSenv var 设置为正确的值并以同一用户身份运行):

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

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

  • 得到错误 `Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell is not provided by any .service files` 没有 sudo 和 `Failed to open connection to "session" message bus: Unable to autolaunch a带有 sudo 的 X11` 没有 $DISPLAY 的 dbus-daemon。 (4认同)

Ger*_*ein 13

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

sudo service gdm restart
Run Code Online (Sandbox Code Playgroud)

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

求助,我的 Linux 桌面挂了!

好运!

  • **小心**,我是在同一个 TTY 上做的,这杀死了我当前的会话.. (6认同)

小智 12

这是一个不同的解决方法:

  1. CTRL+ ALT+登录本地终端F1
  2. 运行命令:

    sudo kill -HUP $(pidof gnome-shell)
    
    Run Code Online (Sandbox Code Playgroud)
  3. CTRL+ ALT+返回图形界面F7

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

  • 虽然这确实成功地重新启动了 gnome-shell;我发现有些程序——大概是那些与 GNOME 集成不太好的程序——无法生存;例如:Firefox、Thunderbird、VirtualBox 虚拟机。幸存的程序示例:“文件”、终端、ImageViewer。理想情况下,有一种方法可以在不危及任何正在运行的程序的情况下重新启动 gnome-shell (Ubuntu 19.10) (2认同)

小智 5

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

sudo service lightdm restart
Run Code Online (Sandbox Code Playgroud)

我认为这会杀死您正在运行的其他进程。另请参阅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>其杀死在屏幕。

  • 重新启动 lig​​htdm 有效,但我想避免它,因为我必须从头开始重新打开所有内容。特别是如果我知道这是 Gnome-shell 的问题并重新启动它*几乎*有效。 (3认同)