为什么 SaK 杀死在不同 VT 上运行的 gdm?

为什么 SaK 杀死在不同 VT 上运行的 gdm?

我运行 Fedora Linux 28,并启用了 sysrq。我按 Alt+PrtScr+K 来终止无响应的 X 会话。但这也重新启动了gdm和另一个 X 会话,它们在不同的 VT 上运行。为什么?

答案1

  1. Linux SaK 杀死当前 tty 打开的所有进程。

    https://elixir.bootlin.com/linux/v4.17/source/drivers/tty/tty_io.c#L2700

  2. systemd-logind 似乎打开了所有活动的 tty。

    您可以使用 来验证这一点lsof

  3. 当 X 作为非特权用户运行并依赖于 systemd-logind 时,它不会处理 systemd-logind 的重新启动。当 X 失去与 systemd-logind 的连接时,它会自行终止。

选择

因此,如果您使用非特权 X 或 Wayland,SaK 可以间接影响所有 VT。

相反,您可以使用 Alt+PrtScr+R,然后使用 Ctrl+Alt+F6。您可以登录文本控制台,然后手动终止进程(例如Xorg,或者gnome-shell如果您使用 GNOME Wayland 会话)。

相关内容