![GNOME Shell 冻结或无响应后,如何重新启动它?](https://linux22.com/image/1046161/GNOME%20Shell%20%E5%86%BB%E7%BB%93%E6%88%96%E6%97%A0%E5%93%8D%E5%BA%94%E5%90%8E%EF%BC%8C%E5%A6%82%E4%BD%95%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E5%AE%83%EF%BC%9F.png)
有时,我的 GNOME Shell 会冻结。我可以看到(听到)后台进程正在运行(播放音乐),但我无法在 GNOME 中执行任何操作。没有Alt+F2后跟Rand Enter。
我可以使用以下方式切换到控制台:Ctrl++ ,以同一用户身份登录并执行:AltF1
gnome-shell --replace
并返回Ctrl+ F7,但随后,我遇到了奇怪的行为。例如,我无法编辑网络连接。我也无法注销。重新启动 的正确方法是什么gnome-shell
?
答案1
更简单的方法是按Alt+ F2,r
然后输入Enter。只要 shell 可用,这种方法就有效。
您还可以SIGQUIT
向gnome-shell
仅终止 shell 的进程发送:
killall -3 gnome-shell
其他方法使用更具破坏性的手段,即关闭所有应用程序,这不应该。
答案2
如果您想“友好地”要求 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
应该没问题。在控制台上,您需要定义必要的环境变量,如DISPLAY
,DBUS*
等等。请参阅/proc/$gnome_shell_pid/environ
- 如果您想重新启动现有的,那么
killall -HUP gnome-shell
就可以这样做。但是,如果您过于频繁地这样做,gnome-shell 可能会禁用所有扩展,强制注销您或以其他不友好的方式运行。
答案3
如果您已经安装了 ubuntu gnome(您应该已经安装了),那么您可能正在使用 gnome 显示管理器。在这种情况下,您应该切换到另一个 TTY,例如 Ctrl + Alt + F4,然后
sudo service gdm restart
我最近也写了一篇关于这种情况的文章:
好运!
答案4
由于您对 不满意gnome-shell --replace
,您可能需要尝试重新启动显示管理器本身。
sudo service lightdm restart
我认为这会终止您正在运行的其他进程。另请参阅http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/
如果你真的遇到过每次都卡死的情况,可以启用 SysRq,具体方法如下https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst,然后杀死<alt><sysrq/print_screen_key><k>
屏幕上的任何东西。