退出SSH会话后最持久保存sbt进程的方法?

bas*_*ics 2 ssh ubuntu session process sbt

sbt退出ssh会话后,如何保持进程(特别是通过命令生成的进程)存活?以下相关问题[1][2][3][4]虽可提供信息,但在我的特定情况下并未得出确定的解决方案。简要背景:我有三台服务器代表组成群集的节点,并且每个节点上都运行着相同的程序来分发计算密集型任务。该过程旨在始终在计算机启动时运行,即,每个服务器专用于该项目。每个节点都有以下内容(当我有机会重新登录时,将使用正确的信息来更新它):

Ubuntu 12.04.2 LTS
JVM X.X.X (is JDK 1.7 update 24+)
Scala X.X.X
sbt X.X.X
Run Code Online (Sandbox Code Playgroud)

我可以通过大学网络访问每个节点ssh。我已经尝试过tmux并分离会话,但是只要我自己的笔记本电脑不重新启动,这只会保留该过程。我采取以下步骤在每个节点上启动程序:

  1. 通过登录到每个节点 ssh user@host -p port
  2. 导航到适当的目录并使用sbt* 启动我的程序
  3. runsbt控制台中发出命令

*实际命令是 sbt -Dgeotrellis cluster_seed_ip=xxx.xxx.xxx.xxx

disownnohup最合适的方法?给定一个答案,我需要发出什么具体且语法正确的命令(如果使用该方法,则从sbt控制台发出disown),以便该sbt进程与我的用户帐户解除关联,并且在退出ssh会话后继续运行?

Dan*_*bos 5

看起来SBT挂在后台是JLine问题。有一种解决方法:

sbt -Djline.terminal=jline.UnsupportedTerminal about &
Run Code Online (Sandbox Code Playgroud)

只需将此标志添加到要在后台运行的任何SBT命令即可。