| Summary: | При завершении xrdp-сессии она зависает | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Simply Linux | Reporter: | Vladimir Mokrozub <mogaba2009> | ||||
| Component: | bugs | Assignee: | Mikhail Efremov <sem> | ||||
| Status: | NEW --- | QA Contact: | Andrey Cherepanov <cas> | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | alexei.mezin, programist.el | ||||
| Version: | 11.0 | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
|
Description
Vladimir Mokrozub
2025-12-19 12:54:40 MSK
После закрытия XFCE через "завершить сессию", на самом деле остаются запущенными куча процессов
● session-1159.scope - Session 1159 of User alexei
Loaded: loaded (/run/systemd/transient/session-1159.scope; transient)
Transient: yes
Active: active (running) since Fri 2025-12-19 13:08:33 MSK; 4min 51s ago
Invocation: 2a4d35dbfa2d42d2b0c33fe6df67ae0b
Tasks: 43
Memory: 204.5M (peak: 404.7M, swap: 8K, swap peak: 8K)
CPU: 10.499s
CGroup: /user.slice/user-1000.slice/session-1159.scope
├─2427445 xrdp-sesexec
├─2427471 Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
├─2427486 /bin/bash /etc/xrdp/startwm.sh
├─2427487 /usr/sbin/xrdp-chansrv
├─2427798 /usr/libexec/polkit-1/polkit-gnome-authentication-agent-1
├─2427801 /usr/bin/python3 /usr/bin/blueman-applet
├─2427804 /usr/lib64/xfce4/notifyd/xfce4-notifyd
├─2427807 /usr/bin/python3 /usr/share/system-config-printer/applet.py
├─2427810 nm-applet
└─2427817 xfce4-screensaver
Тоже самое и у меня: Если попытаться выйти из xrdp-сессии, экран становится черным и сессия зависает. Если закрыть окно, процессы пользователя остаются запущенными, и при повторном подключении этим же пользователем опять получаем черный экран. Проверено на SimplyLinux, Startkit_Xfce Установка с нуля и далее: (apt-get install xrdp && usermod -a -G tsusers,tsadmins myuser1 && systemctl enable xrdp && systemctl start xrdp && systemctl status xrdp) Вход нормальный, а при выходе зависание. Проверено на remmina и mstsc Windows. После закрытия окна RDP терминала на сервере xrdp видим: $ xrdp-sesadmin -c=list Session ID: 1272 Display: :10 User: myuser1 Session type: Xorg Screen size: 1920x1080, color depth 24 Started: Wed Jan 28 16:06:09 2026 Start IP address: 192.168.8.115 Created attachment 20689 [details]
Рабочий вариант
В файл /etc/xrdp/startwm.sh добавили новую функцию:
get_xdg_session_startupcmd()
{
# If DESKTOP_SESSION is set and valid then the STARTUP command will be taken from there
# GDM exports environment variables XDG_CURRENT_DESKTOP and XDG_SESSION_DESKTOP.
# This follows it.
if [ -n "$1" ] && [ -d /usr/share/xsessions ] \
&& [ -f "/usr/share/xsessions/$1.desktop" ]; then
STARTUP=$(grep ^Exec= "/usr/share/xsessions/$1.desktop")
STARTUP=${STARTUP#Exec=*}
XDG_CURRENT_DESKTOP=$(grep ^DesktopNames= "/usr/share/xsessions/$1.desktop")
XDG_CURRENT_DESKTOP=${XDG_CURRENT_DESKTOP#DesktopNames=*}
XDG_CURRENT_DESKTOP=${XDG_CURRENT_DESKTOP//;/:}
export XDG_CURRENT_DESKTOP
export XDG_SESSION_DESKTOP="$DESKTOP_SESSION"
fi
}
Блок:
# debian, alt
if [ -r /etc/X11/Xsession ]; then
pre_start
. /etc/X11/Xsession
post_start
exit 0
fi
заменили на:
# debian, alt
if [ -r /etc/X11/Xsession ]; then
pre_start
# if you want to start preferred desktop environment,
# add following line,
# [ -n "$XRDP_SESSION" ] && export DESKTOP_SESSION=<your preferred desktop>
# in either of following file.
# 1. ~/.profile
# 2. create a file (any_filename.sh is OK) in /etc/profile.d
# <your preferred desktop> shall be one of "ls -1 /usr/share/xsessions/|cut -d. -f1"
# e.g. [ -n "$XRDP_SESSION" ] && export DESKTOP_SESSION=ubuntu
# Alternatively, set "PassShellAsEnv=DESKTOP_SESSION" in sesman.ini, which
# lets the user specify the required session directly.
# STARTUP is the default startup command.
# if $1 is empty and STARTUP was not set
# /etc/X11/Xsession.d/50x11-common_determine-startup will fallback to
# x-session-manager
if [ -z "$STARTUP" ] && [ -z "$DESKTOP_SESSION" ] && ! which wm-select >/dev/null 2>&1; then
RUNWM=/usr/bin/runwm
DESKTOP_SESSION="$($RUNWM default 2>/dev/null ||:)"
[ -n "$DESKTOP_SESSION" ] || [ ! -d /usr/share/xsessions ] ||
DESKTOP_SESSION="$(ls -1 /usr/share/xsessions | head -n 1 | cut -d. -f1)"
fi
if [ -z "$STARTUP" ] && [ -n "$DESKTOP_SESSION" ]; then
get_xdg_session_startupcmd "$DESKTOP_SESSION"
fi
if [ -n "$STARTUP" ]; then
. /etc/X11/Xsession "$STARTUP"
else
. /etc/X11/Xsession
fi
post_start
exit 0
fi
После чего получили некорректный выход.
Если использовать старый файл то ошибка уходит тут, но может вылезти в других вариантах использования терминала.
Выход работает со старым файлом /etc/xrdp/startwm.sh, но в логе xrdp.service пишет фев 11 16:57:35 host-sl11 xrdp[9766]: [ERROR] Xorg server closed connection Нужно искать ошибку в новом файле скрипта startwm.sh |