Lorsque j'utilise mon PC A pour me connecter au bureau distant du serveur, qui exécute Ubuntu, exécuter un programme (par exemple, MATLAB), fermer la connexion et se reconnecter au serveur, MATLAB est toujours en cours d'exécution.
Cependant, si j'utilise mon PC B pour me reconnecter au serveur, il semble qu'une nouvelle session et aucune fenêtre MATLAB ne soient visibles. Mais top
indique que MATLAB est en cours d'exécution.
Comment puis-je me connecter à la même session que j'ai commencé à utiliser PC A?
Théoriquement, il y a 2 façons de faire cela:
[Source] Modification de xrdp.ini pour ajouter un local login
personnalisé
Assurez-vous que xrdp et vino sont installés
Sudo apt-get install xrdp vino
Éditer /etc/xrdp/xrdp.ini
Sudo gedit /etc/xrdp/xrdp.ini
copier le xrdp1
et changer son numéro en quelque chose qui n’est pas déjà dans le fichier ini. Fondamentalement, le nombre ici détermine l'ordre de déroulement. Ajoute ça
[xrdp1]
name=MyLocalLogin
lib=libvnc.so
username= password=ask
ip=127.0.0.1
port=5900
Maintenant, essayez simplement de choisir votre session personnalisée MyLocalLogin
[Source] Je n'ai pas encore essayé. Cela semble un peu pénible car cela implique de modifier et de recompiler le source xrdp.
Installez les éléments de base nécessaires.
Sudo apt-get install autoconf libtool libpam0g-dev libx11-dev libxfixes-dev libssl-dev
Sudo apt-get install gnome-session-fallback
echo ”gnome-session --session=gnome-fallback” > ~/.xsession
Sudo apt-get install x11vnc
Téléchargez le source xrdp à partir de ici . Maintenant, extrayez-le n'importe où, appelons-le root. Allez à la racine/xrdp-master et:
Sudo ./bootstrap
Sudo ./configure
Sudo make
Sudo make install
Nous devons maintenant configurer notre système pour que xrdp utilise le paquet X11Vnc et que le service xrdp soit démarré automatiquement au redémarrage de l'ordinateur Ubuntu.
Sudo apt-get install xrdp
Sudo apt-get remove xrdp
Sudo mv startwm.sh startwm.sh.backup
Sudo ln -s /etc/X11/Xsession /etc/xrdp/startwm.sh
Sudo mkdir /usr/share/doc/xrdp
Sudo cp /etc/xrdp/rsakeys.ini /usr/share/doc/xrdp/rsakeys.ini
Nous devons maintenant mettre à jour le /etc/init.d/xrdp
. Copiez simplement le contenu du fichier de script xrdp modifié dans votre /etc/init.d/xrdp
<------- Begin of the Script -------->
#!/bin/sh -e
#
# start/stop xrdp and sesman daemons
#
### BEGIN INIT INFO
# Provides: xrdp
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start xrdp and sesman daemons
# Description: XRDP uses the Remote Desktop Protocol to present a
# graphical login to a remote client allowing connection
# to a VNC server or another RDP server.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/xrdp
PIDDIR=/var/run
SESMAN_START=yes
USERID=xrdp
RSAKEYS=/etc/xrdp/rsakeys.ini
NAME=xrdp
DESC="Remote Desktop Protocol server"
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
check_root() {
if [ "$(id -u)" != "0" ]; then
log_failure_msg "You must be root to start, stop or restart $NAME."
exit 4
fi
}
if [ -r /etc/default/$NAME ]; then
. /etc/default/$NAME
fi
# Tasks that can only be run as root
if [ "$(id -u)" = "0" ]; then
# Check for pid dir
if [ ! -d $PIDDIR ] ; then
mkdir $PIDDIR
fi
chown $USERID:$USERID $PIDDIR
# Check for rsa key
if [ ! -f $RSAKEYS ] || cmp $RSAKEYS /usr/share/doc/xrdp/rsakeys.ini > /dev/null; then
log_action_begin_msg "Generating xrdp RSA keys..."
(umask 077 ; xrdp-keygen xrdp $RSAKEYS)
chown $USERID:$USERID $RSAKEYS
if [ ! -f $RSAKEYS ] ; then
log_action_end_msg 1 "could not create $RSAKEYS"
exit 1
fi
log_action_end_msg 0 "done"
fi
fi
case "$1" in
start)
check_root
exitval=0
log_daemon_msg "Starting $DESC "
if pidofproc -p $PIDDIR/$NAME.pid $DAEMON > /dev/null; then
log_progress_msg "$NAME apparently already running"
log_end_msg 0
exit 0
fi
log_progress_msg $NAME
start-stop-daemon --start --quiet --oknodo --pidfile $PIDDIR/$NAME.pid \
--chuid $USERID:$USERID --exec $DAEMON
exitval=$?
if [ "$SESMAN_START" = "yes" ] ; then
log_progress_msg "sesman"
start-stop-daemon --start --quiet --oknodo --pidfile $PIDDIR/xrdp-sesman.pid \
--exec /usr/local/sbin/xrdp-sesman
value=$?
[ $value -gt 0 ] && exitval=$value
fi
# Make pidfile readables for all users (for status to work)
[ -e $PIDDIR/xrdp-sesman.pid ] && chmod 0644 $PIDDIR/xrdp-sesman.pid
[ -e $PIDDIR/$NAME.pid ] && chmod 0644 $PIDDIR/$NAME.pid
# Note: Unfortunately, xrdp currently takes too long to create
# the pidffile unless properly patched
log_end_msg $exitval
;;
stop)
check_root
[ -n "$XRDP_UPGRADE" -a "$RESTART_ON_UPGRADE" = "no" ] && {
echo "Upgrade in progress, no restart of xrdp."
exit 0
}
exitval=0
log_daemon_msg "Stopping RDP Session manager "
log_progress_msg "sesman"
if pidofproc -p $PIDDIR/xrdp-sesman.pid /usr/local/sbin/xrdp-sesman > /dev/null; then
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/xrdp-sesman.pid \
--chuid $USERID:$USERID --exec /usr/local/sbin/xrdp-sesman
exitval=$?
else
log_progress_msg "apparently not running"
fi
log_progress_msg $NAME
if pidofproc -p $PIDDIR/$NAME.pid $DAEMON > /dev/null; then
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/$NAME.pid \
--exec $DAEMON
value=$?
[ $value -gt 0 ] && exitval=$value
else
log_progress_msg "apparently not running"
fi
log_end_msg $exitval
;;
restart|force-reload)
check_root
$0 stop
# Wait for things to settle down
sleep 1
$0 start
;;
reload)
log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
log_warning_msg "cannot re-read the config file (use restart)."
;;
status)
exitval=0
log_daemon_msg "Checking status of $DESC" "$NAME"
if pidofproc -p $PIDDIR/$NAME.pid $DAEMON > /dev/null; then
log_progress_msg "running"
log_end_msg 0
else
log_progress_msg "apparently not running"
log_end_msg 1 || true
exitval=1
fi
if [ "$SESMAN_START" = "yes" ] ; then
log_daemon_msg "Checking status of RDP Session Manager" "sesman"
if pidofproc -p $PIDDIR/xrdp-sesman.pid /usr/local/sbin/xrdp-sesman > /dev/null; then
log_progress_msg "running"
log_end_msg 0
else
log_progress_msg "apparently not running"
log_end_msg 1 || true
exitval=1
fi
fi
exit $exitval
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0