长时间远程运行的R会话在ESS/Emacs中的状态是什么?

3
我经常远程运行R,并且使用RStudio server非常成功。然而,在许多情况下,Emacs/ESS仍然更可取,特别是因为我经常同时处理多个项目。当预期连接会中断时,在emacs中运行ESS/R的最新技术是什么?更具体地说,我想在Emacs中运行一个tmux会话,以便可以连接到在tmux(或screen)中运行的长时间运行的R会话。ESS/Emacs支持这种情况的状态如何?这似乎随着时间的推移而发生变化,我还没有找到“确定性”的方法(也许没有)。
1个回答

10

我经常这样做,无论在家还是工作中。

关键组件:

  1. 在守护程序模式下启动emacs:emacs --daemon &。现在emacs是长时间运行的,并且由于与前端断开连接,因此是持久的。

  2. 使用tmux(或在我的情况下,围绕tmux的byobu包装器)以文本模式使用emacsclient -nw进行连接。由于tmux是持久的,因此我可以随时连接、断开连接、重新连接…,同时具有来自byobu/tmux的多个选项卡、分割窗格。

  3. 当附近-在家庭桌面连接到家庭服务器或在工作中有多台服务器时-通过emacsclient -c进行连接。现在我拥有标准的X11功能、绘图等。 这是我的默认'工作'模式。

  4. 但是,由于每个emacs会话都有一个R会话(或实际上在工作中有几个),因此我也可以通过ssh进入tmux/byobu会话。

  5. 另一个不错的功能是tramp-mode,它允许您在本地的Emacs缓冲区中编辑远程文件(可能由远程R会话使用),因为tramp包装ssh和scp,使远程文件看起来像本地文件。

  6. 最后但并非最不重要的是mosh在(Ubuntu)笔记本电脑上非常好用,因为它会在回到家或工作的本地网络时自动恢复会话。 在我的情况下,从Debian/Ubuntu到服务器和客户端的mosh;也可能适用于您的OS X。

简而言之,这个方法很棒,但可能需要额外的步骤将emacs与特定的tmux shell断开连接。守护程序模式是关键。其中一些会话持续了数周。

大约半个十年前开始我就这样工作了。可能更久了。但是使用ESS连接到远程Emacs会话要早得多——当我第一次在1990年代末看到它时,我认为ESS手册已经有了相关条目。

但是我觉得这更容易,因为它为我提供了“整个emacs”,包括我可能需要的其他缓冲区和会话。

编辑: 另外,我在家和工作中也使用RStudio(服务器),但通常出于所有常见原因而在Emacs中度过更多时间。

更多编辑: 回应@kjhealy,我补充说我也喜欢tramp-mode(通过ssh和scp的魔法在本地编辑远程文件)以及mosh(会话在我回到家或工作时自动恢复)。


如果ess-remote可以连接到不是由emacs启动的R进程,那就太好了。这样tramp模式就可以为您完成所有操作。 - groceryheist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接