【问题标题】:What is the status of long-running remote R sessions in ESS/Emacs?ESS/Emacs 中长时间运行的远程 R 会话的状态如何?
【发布时间】:2015-05-27 00:41:00
【问题描述】:

我经常远程运行 R,并且使用 RStudio 服务器在这方面取得了巨大成功。然而,在许多情况下,Emacs/ESS 仍然更可取,特别是因为我经常同时处理多个项目。当期望连接会中断时,在 emacs 中运行 ESS/R 时,最先进的技术是什么?更具体地说,我很想在 Emacs 中运行一个 tmux 会话,以便我可以连接到在 tmux(或屏幕)中运行的长时间运行的 R 会话。支持这种场景的 ESS/Emacs 的状态如何?这似乎随​​着时间的推移而改变,我还没有找到“确定的”方法(也许没有)。

【问题讨论】:

    标签: r session emacs tmux ess


    【解决方案1】:

    我一直这样做。无论是在家,还是在工作。

    关键组件:

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

    2. 使用 tmux(或者在我的情况下,使用 tmux 的 byobu 包装器)在文本模式下使用 emacsclient -nw 进行连接。随着 tmux 的持续存在,我可以随意连接、断开连接、重新连接……,同时拥有来自 byobu/tmux 的多个选项卡、拆分窗格……。

    3. 在附近时——在家庭桌面上连接到家庭服务器,或在使用多台服务器时——通过emacsclient -c 连接。现在我有了标准的 X11 优点,绘图等 pp。这是我默认的“工作”模式。

    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 会话要旧得多——我认为 ESS 手册在我在 1990 年代后期第一次看到它时已经有了相应的条目。

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

    编辑:简单地说,我也在家里和工作中使用 RStudio(服务器),但出于所有常见原因,我通常会花更多时间在 Emacs 上。

    更多编辑:@kjhealy 的后续行动中,我补充说我也是流浪者模式的粉丝(在 Emacs 中本地编辑远程文件,这要归功于 ssh 和 scp 的魔力) 以及 mosh(当我上班或回家时会神奇地恢复的会话)。

    【讨论】:

    • 如果 ess-remote 可以连接到不是由 emacs 启动的 R 进程,那就太好了。那么流浪模式可以为你做一切。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2014-02-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多