我的桌面使用带有最新更新的 OpenSuse 15.1、systemd 234-lp151.26.16.1、gvfs 1.34.2.1-lp151.6.3.1。
有一段时间(我记不清具体是什么时候开始的)系统关闭至少需要 2 分钟才能完成。当我点击ESC
启动屏幕时,我看到 systemd 正在等待用户管理器作业完成,经过一番挖掘,我发现这是这个过程:
/usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
我做了一些研究,发现这是由 Firefox 和 Thunderbird(以及其他)等程序自动启动的。我还验证了:
- 如果我开机时不使用此类程序,则关机速度很快;
- 如果我注销并使用控制台杀死这些用户进程,关闭速度很快;
- 其他用户帐户也会受到影响,前提是他们使用上述程序。
我配置systemd
了:KillUserProcesses=yes
,但它没有帮助,因为似乎这些进程在注销后仍然需要 2 分钟才能终止。
此外,在同一台机器上,我还可以从单独的 SSD 启动 Ubuntu-mate (18.04 LTS),并且它显示出相同的症状。
我如何找出导致 2 分钟延迟的原因?
编辑:也许值得一提的是,一旦我注销,我就无法再次登录,因为我收到一个对话框“无法与 Dbus 同步”。我需要先按 ctrl-Backspace 来重置 X。
答案1
FUSE 有一个专用命令fusermount
用于撤消 FUSE 安装。至少在 Debian 10 上,它默认设置了 SUID root。
因此,您可以添加fusermount -u /run/user/$(id -u)/gvfs
到在 GUI 注销时执行的脚本(例如,$HOME/.kde/shutdown/gvfs-workaround.sh
在较旧的 KDE 上或$HOME/.config/plasma-workspace/shutdown/gvfs-workaround.sh
在 KDE Plasma Desktop 上)。
答案2
延迟可能是由多种因素引起的,其中大多数是用户进程或 systemd 进程。
如果您使用的KDE
是 Open SUSE 的默认桌面环境,请尝试下面的脚本,该脚本会在退出时终止用户管理器进程。这对我有用。
将脚本添加到$HOME/.kde/shutdown
#! /bin/sh - pulseaudio --kill systemctl --user exit exit
如果此工作代码适合您或不适合您,请留下一些反馈,谢谢。