我有两个用户会话正在运行。大多数时候我都可以在用户之间切换而不会出错。但过了一会儿,在我尝试切换用户后,在我要切换到的用户的登录屏幕上,登录屏幕冻结了。
光标在冻结的登录屏幕上可以工作,但其他功能都不起作用。即使我尝试在 UI 不反映我的输入的情况下进行操作,也无法登录。
如果我按下 ctrl+alt+F1,我可以切换回来并登录到其他用户,但如果我尝试切换到冻结的用户,什么也不会发生。
我正在使用 Radeon rx580 显卡...
操作系统:Kubuntu 20.04 KDE Plasma 版本:5.18.5 KDE Frameworks 版本:5.68.0 Qt 版本:5.12.8 内核版本:5.11.0-27-generic
至少,有没有一种解决方法,可以在不重新启动的情况下重新启动或终止该用户会话?
答案1
是否至少有一种解决方法,可以在不重新启动的情况下重新启动或终止该用户会话?
从 TTY 尝试运行以下命令:
killall kwin
startkde
这应该可以重新启动您的用户会话。
至于实际修复,我们需要查看日志才能提供此信息。大多数守护进程都是按会话运行的,因此任何事物都可能冻结会话。
编辑1
要进入 TTY,只需按Ctrl+ Alt+ F5(例如)即可转到 TTY5。替换F5为F6将带您进入 TTY6,依此类推。
系统将提示您输入用户名和密码。登录后,您应该能够运行我的答案(上文)和@SanchoS.ReinstateMonicaCellio 的答案中的命令。希望这些能为您提供解决方法。
接下来尝试运行命令
dmesg --facility=daemon
和这里输入的完全一样。这样就dmesg
可以了,但是这会将输出修剪到我们可能需要的程度。如果不行,我们可以回过头来“扩大范围”。
结果将看起来像一个日志文件。您的问题的解决方案很可能在这些日志中。它们按日期/时间排序(每个日志列出),因此应该相对容易找到上次崩溃的时间并检查该时间段的日志。
如果您需要任何额外解释,请告诉我们。我们很乐意为您解释。
确保将日志的输出发布到您的问题中(在上次事件发生的时间范围内)。
答案2
尝试的选项,假设user2
是应该重新启动会话的用户
- 从终端(您可以使用Ctrl+ Alt+F4来访问F6)登录到
user2
,DISPLAY=:<d> kwin --replace
- 从登录到 的终端
user2
,killall -3 kwin && DISPLAY=:<d> kwin
- 从登录到 的终端
user2
,kquitapp5 plasmashell && kstart5 plasmashell
- 从登录到的终端
user2
,killall -3 -u user2
(更激进) - 从终端登录
user1
(必须是 sudoer),sudo killall -3 -u user2
(也很激进)
笔记:
要查找显示号码,
<d>
使用命令who
。核心转储可能有用(比较各种信号,https://stackoverflow.com/questions/4042201/how-does-sigint-relate-to-the-other-termination-signals-such-as-sigterm-sigquit和https://man7.org/linux/man-pages/man7/signal.7.html)。
您可能期望下一次内核/kwin 更新后这个问题会自行解决。
如果以上方法都不起作用,也许稍微改变/组合就可以。
请发布输出
$ echo $XDG_SESSION_TYPE $ echo $XDG_SESSION_ID $ who $ ps -efl | grep user2
user2
比较未登录 kwin 会话、登录以及会话冻结时的输出也很有启发。
答案3
答案中的选项 3https://askubuntu.com/a/1360848/1418851在我遇到的类似案件中,它对我有用。也许这是一条评论,但由于声誉问题,我不能这么做,但其他人知道它可能有用。