this is my situation: I usually run R
from within Emacs
using ESS
into terminal emulator, in my local pc. In my work place we get a new server running R
so I would use the remote server via ssh
. I connect via ssh
and all works well. What I would do is to keep alive the R
console while I close my laptop and go home so, from my home I would reconnect to the existing R
session.
I tried to put the R
console in background using C-q C-z Enter
to stop the process but, while I close the ssh connection the proces is killed. No luck using bg &
too. I also tried mosh
but, also in this case, I get some issue related to the UDP traffic across my work's network. Screen
and tmux
are not also very useful due to their bad interaction with the Emacs eshell
.
In both client and server machine I run Debian 8 xfce.
Is there a way to keep alive the R terminal while closing the ssh connection? Which is your approach to the long R sessions?
EDIT
Finally here and here I found the solutio that I'm looking for. I tried the same approach as in the link above, but using tmux, and I get lots of error. The holy grail is screen. I tried to follow step-by-step that procedure but I get an error from emacs while I try to attach a screen session from within eshell. So I tried to use ansi-term instead of eshell and all works as expected. I can attach and detach the R session. In this way I use the remote server machine only for the computation while the R scripts are in my laptop. So, this is the work-flow:
ssh
to the host server- start
screen
session - start
R
- detach
screen
- exit from the server closing the ssh connection
- run
emacs
as daemon in your local machine and open anemacsclient
instance (not necessary run emacs via emacsclient but I prefer this way) - open your
R
script - open an
ansi-term
(M-x ansi-term
) ssh
to the server fromansi-term
- attach the screen session (
screen -r
) - connect the remote
R
console to the localR
script (M-x ess-remote
) - to detach from R from within ansi-term use
Ctrl-q Ctrl-a d return
Thats it. Now I can run a remote R
process using a local R
script, closing the connection but leaving open the R
console so I can re-attach to it in the future, also from a different IP.