后台R控制台和长时间运行的会话
这就是我的情况:我通常使用后台R控制台和长时间运行的会话,r,emacs,ssh,R,Emacs,Ssh,这就是我的情况:我通常使用ESS从Emacs运行R到终端模拟器,在我的本地pc上。在我的工作场所,我们有一个新服务器运行R,因此我会通过ssh使用远程服务器。我通过ssh连接,一切正常。我要做的是在我关闭笔记本电脑回家时保持R控制台的活动状态,这样,我就可以从家里重新连接到现有的R会话。 我尝试将R控制台置于后台,使用C-q C-z Enter停止进程,但在关闭ssh连接时,进程被终止。使用bg&也没有运气。我也尝试了mosh,但在本例中,我遇到了一些与我工作网络中的UDP通信有关的问题屏幕和t
ESS
从Emacs
运行R
到终端模拟器,在我的本地pc上。在我的工作场所,我们有一个新服务器运行R
,因此我会通过ssh
使用远程服务器。我通过ssh连接,一切正常。我要做的是在我关闭笔记本电脑回家时保持R
控制台的活动状态,这样,我就可以从家里重新连接到现有的R
会话。
我尝试将R
控制台置于后台,使用C-q C-z Enter
停止进程,但在关闭ssh连接时,进程被终止。使用bg&
也没有运气。我也尝试了mosh
,但在本例中,我遇到了一些与我工作网络中的UDP通信有关的问题<代码>屏幕和tmux
也不是很有用,因为它们与Emacs eshell
的交互不好。
在客户机和服务器机器中,我都运行Debian8XFCE
有没有办法在关闭ssh连接时保持R终端的活动状态?你采用哪种方法来进行长距离R训练
编辑
最后,我找到了我正在寻找的解决方案。我尝试了与上面链接中相同的方法,但是使用了tmux,我得到了很多错误。圣杯是屏幕。我试图一步一步地遵循这个过程,但当我试图从eshell中附加屏幕会话时,emacs出现了一个错误。所以我试着用ansi术语代替eshell,所有的工作都如期进行。我可以附加和分离R会话。这样,当R脚本在我的笔记本电脑中时,我只使用远程服务器进行计算。
这就是工作流程:
ssh
到主机服务器屏幕
会话R
屏幕
emacs
,并打开EmacClient
实例(不必通过EmacClient运行emacs,但我更喜欢这样
(方式)R
脚本ansi术语
(M-x ansi术语
)ssh
从ansi-term
screen-r
)R
控制台连接到本地R
脚本(M-x ess-remote
)Ctrl-q Ctrl-a d return
就这样。现在,我可以使用本地
R
脚本运行一个远程R
进程,关闭连接,但保持R
控制台打开,以便将来也可以从不同的IP重新连接到它 这是我最喜欢的话题之一:)以下是我的工作:
- 始终以
的形式启动emacs,以便它在后台运行emacs--daemon
- 始终启动
(用于文本模式)或emacsclient-nw
(在x11/图形模式下)以在后台访问守护的emacs。我把它们分别化名为emacsclient-c
和emt
emx
ssh
发送到该框,然后从任何可以启动ssh
的位置继续,这可能是智能手机或浏览器。ESS当然允许您有多个R会话。在M-x R
之后,我经常调用M-x rename buffer
将缓冲区与我所处理的项目名称或想法对齐
我将这两者进一步结合起来
(这是一个花哨的byobu
包装器,在许多发行版和OSX上都可以使用,最初来自Ubuntu),用于保持shell会话tmux
适用于像工作和家庭这样的地方,我的笔记本电脑可以简单地恢复mosh
emacs
不需要byobu
或mosh
来持久化(因为运行守护进程可以解决这个问题),但您可能希望它用于所有其他shell会话
多年来,这种设置一直是我在工作和家庭中的goto工具。我在笔记本电脑中运行
EmacClient-nw
,调用eshell
l,然后对主机调用ssh
。我从这里开始一个R
会话。在这一点上,我不知道如何在关闭ssh
连接时保持R
进程的活动状态,以及如何重新连接它。正如我所述,这是一种非常不同的方法。在我的例子中,emacs位于服务器上,并保持活动状态。我与它的联系来来去去去,但它的会话仍然存在。试试看。好吧,现在我明白了。我过去也使用过这种方法,但是,我会改变它,只是为了只在笔记本电脑中保存脚本文件,并且只使用服务器进行计算。同样,服务器上有工作(和脚本)。使用tramp模式(也推荐),您可以通过ssh从笔记本电脑编辑这些内容。