la risposta di oleg-andriyanov non ha funzionato nel mio caso. (processo terminato subito dopo il lancio)
In tal caso, prova il comando di Mirko Stocker scritto in play ML di seguito per un'alternativa.https://groups.google.com/forum/#!topic/play-framework/ZgjrPgib0-8
# screen -d -m sbt run
Anche questo dovrebbe funzionare
sbt -Djline.terminal=jline.UnsupportedTerminal run &
fonte:https://github.com/sbt/sbt/issues/701
Sembra sbt
richiesto l'input dal tuo terminale. Se non ha davvero bisogno di input (come probabilmente accade quando esegui il programma in background), puoi eseguirlo in questo modo:
sbt run </dev/null >output-file &
Vedi questa risposta per i dettagli.
MODIFICA
Ok, questo era un enigma. Risposta breve:esegui sbt
come segue:
setsid nohup sbt run &
Motivazione:
Il motivo per cui sbt
fermate è l'arrivo di SIGTTOU
segnale. Viene consegnato al processo in background in diversi casi, tra cui la modifica della configurazione del terminale . Questo è il nostro caso perché secondo strace -f sbt run &
, sbt
fa molta magia nera sotto il cofano in questo modo:
[pid 16600] execve("/usr/bin/sh", ["sh", "-c", "stty -g < /dev/tty"], [/* 75 vars */] <unfinished ...>
Per risolvere questo problema, puoi eseguire sbt
in una sessione diversa per staccarlo dal terminale corrente, in modo che non si apra /dev/tty e interferisca con il nostro terminale.