Session 退出SSH会话后保持sbt进程的最合适方法?

Session 退出SSH会话后保持sbt进程的最合适方法?,session,ubuntu,process,ssh,sbt,Session,Ubuntu,Process,Ssh,Sbt,退出ssh会话后,如何保持进程(特别是通过sbt命令生成的进程)处于活动状态?以下是相关的问题,这些问题提供了信息,但在我的具体案例中还没有最终的解决方案。简要的背景:我有三台服务器,代表组成集群的节点,每个节点上运行着相同的程序,用于分配计算密集型任务。此过程旨在始终在机器启动时运行,即每台服务器仅用于此项目。每个节点都有以下内容(当我有机会重新登录时,我将使用正确的信息更新此内容): 我通过ssh通过大学网络访问每个节点。我尝试了tmux并分离会话,但这只会在我自己的笔记本电脑不重新启动的情

退出
ssh
会话后,如何保持进程(特别是通过
sbt
命令生成的进程)处于活动状态?以下是相关的问题,这些问题提供了信息,但在我的具体案例中还没有最终的解决方案。简要的背景:我有三台服务器,代表组成集群的节点,每个节点上运行着相同的程序,用于分配计算密集型任务。此过程旨在始终在机器启动时运行,即每台服务器仅用于此项目。每个节点都有以下内容(当我有机会重新登录时,我将使用正确的信息更新此内容):

我通过
ssh
通过大学网络访问每个节点。我尝试了
tmux
并分离会话,但这只会在我自己的笔记本电脑不重新启动的情况下持续这个过程。我采取以下步骤在每个节点上开始程序:

  • 通过
    ssh登录到每个节点user@host-p端口
  • 导航到适当的目录并使用
    sbt
    *
  • sbt
    控制台中发出
    run
    命令
  • *实际命令是
    sbt-dgeotrelliscluster\u seed\u ip=xxx.xxx.xxx


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

    将sbt作为守护进程运行并非易事。
    大多数建议正在使用

    如果您不想使用sbt汇编,您可以首先打包scala应用程序,然后使用scala命令运行它

    对我来说,命令是,这样,scala将在退出ssh后继续运行:

    sbt clean package
    nohup scala ./target/scala-2.10/trafficgenerator_2.10-1.0.jar &
    

    这更为常见。尝试键入
    sbt clean&
    sbt compile&
    。进程已创建,但不会完成

    使用
    tmxux
    解决您的问题:

    tmux new -d -s $$ && tmux send -t $$ 'SHELL_COMMAND' ENTER
    
    在您的上下文中,SHELL_命令=
    sbt-dgeotrelliscluster_seed_ip=xxx.xxx.xxx.xxx

    您还可以在
    byobu
    后面使用
    tmux

    byobu new -d -s $$ && tmux send -t $$ 'SHELL_COMMAND' ENTER
    

    之后,如果您键入
    byobu
    ,则进入命令会话。

    看起来后台挂起的SBT是一个JLine问题。有一个解决办法:

    sbt -Djline.terminal=jline.UnsupportedTerminal about &
    

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

    我也想知道它。当使用nohup运行时,sbt只是挂起
    sbt -Djline.terminal=jline.UnsupportedTerminal about &