这是在 X 下运行的 pop!os 20.04。
根据这个问题https://gitlab.gnome.org/GNOME/gdm/-/issues/222 曾几何时,gnome 保持打开两个 gnome shell,一个用于用户,一个用于接待员(在用户 gdm 下运行)。然后它被更改,以便在登录后,欢迎者的 gnome shell 被“拆除”。
但我有一个 pop!os 20.04,这种情况没有发生,并且 gdm gnome-shell 增长到使用大量常驻内存(例如,正常运行五天后 > 3GB)。
我可以 sudo kill -9 进程,并且似乎没有不良影响。然而,这些消息随后反复出现:
journalctl _UID=110
gnome-shell-x11.service: Scheduled restart job, restart counter is at 31.
Sep 14 08:13:48 indigo systemd[1392]: Stopped GNOME Shell on X11.
Sep 14 08:13:48 indigo systemd[1392]: Starting GNOME Shell on X11...
Sep 14 08:15:18 indigo systemd[1392]: gnome-shell-x11.service: start operation timed out. Terminating.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: State 'stop-sigterm' timed out. Killing.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Killing process 36912 (gnome-shell) with signal SIGKILL.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Killing process 36917 (dconf worker) with signal SIGKILL.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Main process exited, code=killed, status=9/KILL
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Failed with result 'timeout'.
Sep 14 08:15:23 indigo systemd[1392]: Failed to start GNOME Shell on X11.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Scheduled restart job, restart counter is at 32.
Sep 14 08:15:23 indigo systemd[1392]: Stopped GNOME Shell on X11.
Sep 14 08:15:23 indigo systemd[1392]: Starting GNOME Shell on X11...
我在虚拟机中运行相同版本的 pop,也在 X11 下,并且在虚拟机中没有在 gdm 下运行的进程。
这是我的主机 pop!os(我的真实桌面)上的内容:请注意,还有另一个 gnome-shell 进程在 gdm 下运行;总是有两个。其中只有一个成为常驻内存的失控消费者(我杀了那个)。
UID PID PPID C STIME TTY TIME CMD
gdm 1392 1 0 Sep13 ? 00:00:00 /lib/systemd/systemd --user
gdm 1399 1392 0 Sep13 ? 00:00:00 (sd-pam)
gdm 1444 1392 0 Sep13 ? 00:00:00 /usr/bin/appimagelauncherd
gdm 1445 1392 0 Sep13 ? 00:00:00 /usr/bin/appimagelauncherfs
gdm 1449 1392 0 Sep13 ? 00:00:00 /usr/bin/pulseaudio --daemonize=no --log-target=journal
gdm 1451 1392 0 Sep13 ? 00:00:00 /usr/libexec/tracker-miner-fs
gdm 1458 1379 0 Sep13 tty1 00:00:00 /usr/lib/gdm3/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart
gdm 1460 1458 0 Sep13 tty1 00:00:00 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/110/gdm/Xauthority -background none -noreset -keeptty -verbose 3
gdm 1463 1392 0 Sep13 ? 00:00:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
gdm 1485 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfsd
gdm 1514 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfsd-fuse /run/user/110/gvfs -f -o big_writes
gdm 1522 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
gdm 1528 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfs-goa-volume-monitor
gdm 1532 1392 0 Sep13 ? 00:00:00 /usr/libexec/goa-daemon
gdm 1608 1392 0 Sep13 ? 00:00:00 /usr/libexec/goa-identity-service
gdm 1643 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
gdm 1651 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfs-afc-volume-monitor
gdm 1656 1392 0 Sep13 ? 00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
gdm 1698 1458 0 Sep13 tty1 00:00:00 /usr/libexec/gnome-session-binary --systemd --autostart /usr/share/gdm/greeter/autostart
gdm 1745 1392 0 Sep13 ? 00:00:00 /usr/libexec/at-spi-bus-launcher
gdm 1753 1745 0 Sep13 ? 00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
gdm 1811 1392 0 Sep13 ? 00:00:00 /usr/libexec/gnome-session-ctl --monitor
gdm 1824 1392 0 Sep13 ? 00:00:00 ssh-agent -D -a /run/user/110/openssh_agent
gdm 1829 1392 0 Sep13 ? 00:00:00 /usr/libexec/gnome-session-binary --systemd-service --session=gnome-login
gdm 1955 1392 0 Sep13 ? 00:00:00 /usr/libexec/at-spi2-registryd --use-gnome-session
gdm 1962 1392 0 Sep13 ? 00:00:00 /usr/libexec/xdg-permission-store
gdm 1997 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-a11y-settings
gdm 1998 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-color
gdm 1999 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-keyboard
gdm 2001 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-media-keys
gdm 2003 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-power
gdm 2005 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-print-notifications
gdm 2009 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-rfkill
gdm 2010 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-smartcard
gdm 2011 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-sound
gdm 2014 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-usb-protection
gdm 2016 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-wacom
gdm 2020 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-wwan
gdm 2022 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-xsettings
gdm 2058 1392 0 Sep13 ? 00:00:00 /usr/libexec/gsd-printer
gdm 2269 1392 0 Sep13 ? 00:00:00 /usr/libexec/dconf-service
gdm 37465 1392 0 08:18 ? 00:00:00 /usr/bin/gnome-shell
在我的虚拟实例上:
$ ps -f -u gdm
UID PID PPID C STIME TTY TIME CMD
所以这很奇怪。
我不知道如何弄清楚为什么我基本上要运行整个 gdm 会话。
答案1
显然,让 gdm3 终止其 xserver 会话的补丁是相当新的,并且大多数地方都没有投入生产。我看到的错误甚至发生在 Fedora 32 中(如果你强制欢迎程序使用 xorg,这不是默认值)。
看:https://gitlab.gnome.org/GNOME/gdm/-/issues/222
虚拟机使用 wayland/xwayland 作为问候语。这是更容易修复的方法。
编辑/etc/gdm3/custom.conf
以注释掉强制 xorg.txt 的行。也就是说,将文件编辑为如下所示:
[daemon]
# Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false
因为当欢迎程序使用 wayland/xwayland 时,即使启动 xorg 登录会话,gdm3 也会终止其会话。所以不存在 gdm 拥有的 x 服务器。这可能节省至少 300MB 的常驻 RAM,在我的例子中还避免了内存泄漏。