后台R控制台和长时间运行会话

时间:2015-11-12 15:10:42

标签: r emacs ssh

这是我的情况:我通常在REmacs使用ESS在我的本地电脑中运行终端模拟器。在我的工作场所,我们得到一个运行R的新服务器,因此我将通过ssh使用远程服务器。我通过ssh连接,一切正常。我要做的是在我关闭笔记本电脑并回家时保持R控制台,所以,从我的家里,我将重新连接到现有的R会话。 我尝试使用RC-q C-z Enter控制台置于后台以停止进程,但是当我关闭ssh连接时,进程被终止。使用bg &也没有运气。我也试过了mosh但是,在这种情况下,我遇到了一些与我工作网络中的UDP流量有关的问题。 Screentmux由于与Emacs eshell的良好互动而不是非常有用。 在客户机和服务器机器上,我运行Debian 8 xfce。

有没有办法在关闭ssh连接时保持R终端的活动状态?你对长期会议的态度是什么?

修改

最后herehere我找到了我正在寻找的解决方案。我尝试了与上面链接相同的方法,但是使用tmux,我得到了很多错误。圣杯是屏幕。我尝试按照一步一步的步骤,但是当我尝试从eshell中附加一个屏幕会话时,我从emacs收到错误。所以我尝试使用ansi-term而不是eshell,并且所有工作都按预期工作。我可以附加和分离R会话。通过这种方式,我只使用远程服务器机器进行计算,而R脚本在我的笔记本电脑中。 所以,这就是工作流程:

  1. ssh到主机服务器
  2. 启动screen会话
  3. 启动R
  4. 分离screen
  5. 退出关闭ssh连接的服务器
  6. 在本地计算机上运行emacs作为守护程序并打开emacsclient 实例(不必通过emacsclient运行emacs,但我更喜欢这个 方式)
  7. 打开您的R脚本
  8. 打开ansi-termM-x ansi-term
  9. sshansi-term
  10. 到服务器
  11. 附加屏幕会话(screen -r
  12. 将远程R控制台连接到本地R脚本(M-x ess-remote
  13. 从ans使用Ctrl-q Ctrl-a d return
  14. 中脱离R

    多数民众赞成。现在我可以使用本地R脚本运行远程R进程,关闭连接但是打开R控制台以便将来可以重新连接到它,也可以从不同的IP。

1 个答案:

答案 0 :(得分:5)

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

  • 始终emacs --daemon启动emacs,以便它在后台运行。
  • 始终启动emacsclient -nw(对于textmode)或emacsclient -c(在x11 /图形模式下)以在后台访问守护进程的emacs。我将这些别名分别设为emtemx

现在你已基本完成了。你可以ssh到那个方框,然后从你可以启动ssh ---可能是智能手机或浏览器继续。当然,ESS允许您拥有多个R会话。在M-x R之后,我经常调用M-x rename-buffer来将缓冲区与我正在处理的项目名称或想法对齐。

我将它与两者结合起来

  • byobu(这是一个花哨的tmux包装器,可用于许多发行版和OS X,最初来自Ubuntu)以保持shell会话
  • mosh用于工作和家庭等我的笔记本电脑可以简单恢复的地方

严格来说,需要byobumosh才能保持emacs(因为运行守护程序会照顾它),但您可能需要它对于你所有的其他shell会话。

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