现在,当我从 tty6 上的文本控制台切换到 tty3 上的 GNOME 时,我的系统正在执行磁盘 IO。1.4GB 的交换空间正在使用中。
在 tty6 上,我运行了,以检查它是否与“什么可能正在使用我的 6GB 交换空间?sudo lsof -p 1 | grep dev
”类似的问题。根据那里的背景信息,我希望 PID 1 具有打开的文件描述符. 但它没有!/dev/dri/...
当我从 tty3 运行命令时也是如此。但输出有所不同,因为它现在包含/dev/input/...
.
如果我切换回 tty3 并重试等,这些结果是可重复的。
注意这是我在上游 systemd 中接触过的代码,所以很可能是我的错 :-)。 查看 systemd git commit 消息src/login
,我找不到这种行为的明显故意改变。
我有一个用于 Fedora 27 和 Fedora 28 的虚拟机。他们当我启动它们并lsof
在串行控制台上运行时,Fedora 27 看起来不错。但是,在 Fedora 28 VM 上,如果我运行chvt 6
,则会出现同样的问题。
编辑:如果我将 SELinux 设置为“允许”(记录策略违规,但允许),这种明显的回归就会消失。我已经将它作为一个问题提交到 Fedora 中。 SELinux 干扰 systemd-logind 重启代码
- systemd-238-7.fc28.1.x86_64 (
应该包括“什么可能使用我的 6GB 交换空间? ”的修复。) - gnome-shell-3.28.1-3.fc28.x86_64
这不会发生在 Fedora 27 VM 上
- systemd-234-10.git5f8984e.fc27.x86_64
- gnome-shell-3.26.2-5.fc27.x86_64
我认为VT开关导致gnome-shell释放输入设备(登录dbus API中的ReleaseDevice方法)。这会导致 logind 删除设备的 FD。
因此,这很可能受到问题#8344 "session_device_free(sd) 也丢弃该会话的所有其他设备 fds" 的影响。为 systemd v239 合并了一个修复程序。
我通过测试 systemd 的预发布版本确认了这一点,其中包含修复。
很有可能。对此的修复也与 v239 合并,因此不存在于
systemd-238-7.fc28.1.x86_64
.