后台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
  • 分离
    屏幕
  • 关闭ssh连接后退出服务器
  • 在本地计算机中以守护进程的身份运行
    emacs
    ,并打开
    EmacClient
    实例(不必通过EmacClient运行emacs,但我更喜欢这样 (方式)
  • 打开
    R
    脚本
  • 打开一个
    ansi术语
    M-x ansi术语
  • ssh
    ansi-term
  • 附加屏幕会话(
    screen-r
  • 将远程
    R
    控制台连接到本地
    R
    脚本(
    M-x ess-remote
  • 要从ansi术语中从R中分离,请使用
    Ctrl-q Ctrl-a d return

  • 就这样。现在,我可以使用本地
    R
    脚本运行一个远程
    R
    进程,关闭连接,但保持
    R
    控制台打开,以便将来也可以从不同的IP重新连接到它

    这是我最喜欢的话题之一:)以下是我的工作:

    • 始终以
      emacs--daemon
      的形式启动emacs,以便它在后台运行
    • 始终启动
      emacsclient-nw
      (用于文本模式)或
      emacsclient-c
      (在x11/图形模式下)以在后台访问守护的emacs。我把它们分别化名为
      emt
      emx
    现在你基本上完成了。您可以将
    ssh
    发送到该框,然后从任何可以启动
    ssh
    的位置继续,这可能是智能手机或浏览器。ESS当然允许您有多个R会话。在
    M-x R
    之后,我经常调用
    M-x rename buffer
    将缓冲区与我所处理的项目名称或想法对齐

    我将这两者进一步结合起来

    • byobu
      (这是一个花哨的
      tmux
      包装器,在许多发行版和OSX上都可以使用,最初来自Ubuntu),用于保持shell会话
    • mosh
      适用于像工作和家庭这样的地方,我的笔记本电脑可以简单地恢复
    严格地说,
    emacs
    不需要
    byobu
    mosh
    来持久化(因为运行守护进程可以解决这个问题),但您可能希望它用于所有其他shell会话


    多年来,这种设置一直是我在工作和家庭中的goto工具。

    我在笔记本电脑中运行
    EmacClient-nw
    ,调用
    eshell
    l,然后对主机调用
    ssh
    。我从这里开始一个
    R
    会话。在这一点上,我不知道如何在关闭
    ssh
    连接时保持
    R
    进程的活动状态,以及如何重新连接它。正如我所述,这是一种非常不同的方法。在我的例子中,emacs位于服务器上,并保持活动状态。我与它的联系来来去去去,但它的会话仍然存在。试试看。好吧,现在我明白了。我过去也使用过这种方法,但是,我会改变它,只是为了只在笔记本电脑中保存脚本文件,并且只使用服务器进行计算。同样,服务器上有工作(和脚本)。使用tramp模式(也推荐),您可以通过ssh从笔记本电脑编辑这些内容。