这是我的情况:我通常在R
内Emacs
使用ESS
在我的本地电脑中运行终端模拟器。在我的工作场所,我们得到一个运行R
的新服务器,因此我将通过ssh
使用远程服务器。我通过ssh
连接,一切正常。我要做的是在我关闭笔记本电脑并回家时保持R
控制台,所以,从我的家里,我将重新连接到现有的R
会话。
我尝试使用R
将C-q C-z Enter
控制台置于后台以停止进程,但是当我关闭ssh连接时,进程被终止。使用bg &
也没有运气。我也试过了mosh
但是,在这种情况下,我遇到了一些与我工作网络中的UDP流量有关的问题。 Screen
和tmux
由于与Emacs eshell
的良好互动而不是非常有用。
在客户机和服务器机器上,我运行Debian 8 xfce。
有没有办法在关闭ssh连接时保持R终端的活动状态?你对长期会议的态度是什么?
修改
最后here和here我找到了我正在寻找的解决方案。我尝试了与上面链接相同的方法,但是使用tmux,我得到了很多错误。圣杯是屏幕。我尝试按照一步一步的步骤,但是当我尝试从eshell中附加一个屏幕会话时,我从emacs收到错误。所以我尝试使用ansi-term而不是eshell,并且所有工作都按预期工作。我可以附加和分离R会话。通过这种方式,我只使用远程服务器机器进行计算,而R脚本在我的笔记本电脑中。 所以,这就是工作流程:
ssh
到主机服务器screen
会话R
screen
emacs
作为守护程序并打开emacsclient
实例(不必通过emacsclient运行emacs,但我更喜欢这个
方式)R
脚本ansi-term
(M-x ansi-term
)ssh
从ansi-term
screen -r
)R
控制台连接到本地R
脚本(M-x ess-remote
)Ctrl-q Ctrl-a d return
多数民众赞成。现在我可以使用本地R
脚本运行远程R
进程,关闭连接但是打开R
控制台以便将来可以重新连接到它,也可以从不同的IP。
答案 0 :(得分:5)
这是我最喜欢的主题之一:)以下是我的工作:
emacs --daemon
启动emacs,以便它在后台运行。emacsclient -nw
(对于textmode)或emacsclient -c
(在x11 /图形模式下)以在后台访问守护进程的emacs。我将这些别名分别设为emt
和emx
。现在你已基本完成了。你可以ssh
到那个方框,然后从你可以启动ssh
---可能是智能手机或浏览器继续。当然,ESS允许您拥有多个R会话。在M-x R
之后,我经常调用M-x rename-buffer
来将缓冲区与我正在处理的项目名称或想法对齐。
我将它与两者结合起来
byobu
(这是一个花哨的tmux
包装器,可用于许多发行版和OS X,最初来自Ubuntu)以保持shell会话mosh
用于工作和家庭等我的笔记本电脑可以简单恢复的地方严格来说,不需要byobu
或mosh
才能保持emacs
(因为运行守护程序会照顾它),但您可能需要它对于你所有的其他shell会话。
这种设置多年来一直是我工作和家庭的goto工具。