有时,我的gnome外壳冻结了。我可以看到(听到)后台进程正在运行(播放音乐),但是我无法在gnome中做任何事情。不Alt+ F2+ R。
我可以使用以下命令切换到控制台:Ctrl+ Alt+ F1,以同一用户身份登录并执行:
gnome-shell --replace
然后返回Ctrl+ F7,但是然后,我得到一个奇怪的行为。例如,我无法编辑网络连接。我也无法注销。重新启动gnome-shell的正确方法是什么?
有时,我的gnome外壳冻结了。我可以看到(听到)后台进程正在运行(播放音乐),但是我无法在gnome中做任何事情。不Alt+ F2+ R。
我可以使用以下命令切换到控制台:Ctrl+ Alt+ F1,以同一用户身份登录并执行:
gnome-shell --replace
然后返回Ctrl+ F7,但是然后,我得到一个奇怪的行为。例如,我无法编辑网络连接。我也无法注销。重新启动gnome-shell的正确方法是什么?
Answers:
更简单的方法是按Alt+ F2,r
然后按Enter。只要外壳可用,这将起作用。
您还可以发送SIGQUIT
到gnome-shell
仅终止shell 的进程:
killall -3 gnome-shell
其他方法使用更具破坏性的方法,该方法会关闭所有应用程序,这不是应该的。
SIGHUP
提示,但是,正确的命令不是killall -1 gnome-shell
吗?至少根据man 7 signal
,值SIGHUP
是1。值3对应于SIGQUIT
。我已将值1发送到Gnome Shell,并且按预期完全重新启动了它。
killall -3 gnome-shell
结果导致我杀死了所有应用程序。
Alt+F2
和效果完全相同的终端命令r
,即不消隐整个屏幕...
如果您想“很好地”要求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可能会禁用所有扩展,强行退出您的登录或以其他非用户友好的方式运行。logout otheruser1 otheruser2
)askubuntu.com/a/874504/17941
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service files
没有sudo和Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
sudo 出现了错误。
如果已经安装了ubuntu gnome,那么您可能正在使用gnome显示管理器。在这种情况下,您应该更改为另一个TTY,例如Ctrl + Alt + F4,然后
sudo service gdm restart
我最近也写了一篇关于这种情况的文章:
好运!
由于您不满意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>
杀死其中的所有内容。屏幕。
DISPLAY=:7 gnome-shell --replace
有效?
w
show的显示不同于:0时。如果我使用了错误的显示,则会收到错误消息。
alt-f2-r
或者gnome-shell --replace
什么时候是侏儒的推荐方式。
我有时确实会遇到您所描述的问题,而我的解决方案是:
Ctrl+ Alt+ F1,登录为同一用户,并执行:
sudo pkill -9 ^gnome-shell
然后返回Ctrl+ Alt+F7
如果这是正确的方法,我不知道。对我来说,它每次都能工作。
首先使用以下命令找到您的Ubuntu使用哪个显示管理器:
cat /etc/X11/default-display-manager
就我而言 /usr/sbin/gdm3
从内部X或外部X
对于方法1到4,通过使用w
命令找出正在使用的显示。
w
答案可能是例如tty3
,(因此,我(ack的)“返回到我的显示”键是Ctrl + Alt + F3
sudo /etc/init.d/gdm3 restart
systemctl restart gdm.service
sudo service gdm3 restart
dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
r
然后按Enter。只要外壳不无法使用,就可以使用。按Ctrl + Alt + F2切换到终端窗口。有时,这是不可能的。
按Alt + SysRq + R获取键盘。
如果在失败之前按Ctrl + Alt + F2,请立即重试。
按Alt + SysRq + E终止所有进程。
按Alt + SysRq + I终止所有进程。
按Alt + SysRq + S同步磁盘。
等待确定或完成消息。如果您没有看到任何消息,请查看您的HDD指示灯以查看Sync是否有所作为。
按Alt + SysRq + U卸载所有磁盘驱动器。
等待确定或完成消息。如果您在15到30秒内没有看到任何消息,请假定磁盘已卸载(或无法卸载),然后继续。
按Alt + SysRq + B重新启动。
kill -15 gnome-shell
不适用于我,但kill -9
可以。我认为这是因为kill -9
触发了segfault,而segfault则触发了gnome-shell重新启动自身,而kill -15
没有。
kill -9
不会触发段错误。它发送SIGKILL,这是不可捕获的信号,对此信号唯一的操作是立即退出。它应该只用于当应用程序并不SIGTERM,这是15回应
pkill -11 gnome-shell
会触发段错误,因为这实际上就是信号11所做的。顺便说一句,kill
需要一个进程ID,而不是一个进程名。你是说pkill
还是killall
?
gnome-shell overview
如果可以告诉您,gnome-shell在使用中的搜索功能时会冻结,还是在特定情况下冻结?