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 &