我试过了 nohup "sbt run" &
回报: nohup: failed to run command ‘sbt run’: No such file or directory
并试过:
nohup sbt run &
[2] 7897
# nohup: ignoring input and appending output to ‘nohup.out’
Run Code Online (Sandbox Code Playgroud)
当我回车期待进程继续运行时,我收到:
[2]+ Stopped nohup sbt run
Run Code Online (Sandbox Code Playgroud)
如何将sbt作为守护进程运行?
更新:
sbt run </dev/null &
[5] 8961
Run Code Online (Sandbox Code Playgroud)
我想cd上一个目录:
# cd ..
[5]+ Stopped sbt run < /dev/null (wd: /home/sum)
(wd now: /home)
Run Code Online (Sandbox Code Playgroud)
所以它作为守护进程启动但是如果我执行任何操作,例如更改dir,它会杀死进程吗?如何让流程继续运行?
Ole*_*nov 12
看起来像是sbt您终端的请求输入.如果它确实不需要输入(在后台运行程序时可能就是这种情况),你可以像这样运行它:
sbt run </dev/null >output-file &
Run Code Online (Sandbox Code Playgroud)
有关详情,请参阅此答案.
编辑
好的,现在这是一个难题.简答:运行sbt如下:
setsid nohup sbt run &
Run Code Online (Sandbox Code Playgroud)
理由:
sbt停止的原因是SIGTTOU信号的到来.在几种情况下,它被提供给后台进程,包括修改终端配置.这是我们的情况,因为据说strace -f sbt run &,sbt引擎盖下有很多黑魔法:
[pid 16600] execve("/usr/bin/sh", ["sh", "-c", "stty -g < /dev/tty"], [/* 75 vars */] <unfinished ...>
Run Code Online (Sandbox Code Playgroud)
要解决这个问题,您可以sbt在不同的会话中运行以将其从当前终端分离,这样它就不会打开/ dev/tty并弄乱我们的终端.
小智 8
这也应该有效
sbt -Djline.terminal=jline.UnsupportedTerminal run &
Run Code Online (Sandbox Code Playgroud)
来源:https : //github.com/sbt/sbt/issues/701
| 归档时间: |
|
| 查看次数: |
4161 次 |
| 最近记录: |