Odpověď oleg-andriyanova v mém případě nefungovala. (proces byl ukončen brzy po spuštění)
V takovém případě zkuste jako alternativu příkaz Mirka Stockera napsaný v ML níže.https://groups.google.com/forum/#!topic/play-framework/ZgjrPgib0-8
# screen -d -m sbt run
To by také mělo fungovat
sbt -Djline.terminal=jline.UnsupportedTerminal run &
zdroj:https://github.com/sbt/sbt/issues/701
Vypadá jako sbt
požadovaný vstup z vašeho terminálu. Pokud opravdu nepotřebuje vstup (což je pravděpodobně případ, kdy spouštíte program na pozadí), můžete jej spustit takto:
sbt run </dev/null >output-file &
Podrobnosti naleznete v této odpovědi.
UPRAVIT
Dobře, teď to byla hádanka. Krátká odpověď:spusťte sbt
takto:
setsid nohup sbt run &
Odůvodnění:
Důvod, proč sbt
zastávek je příjezd SIGTTOU
signál. V několika případech je dodáván do procesu na pozadí, mezi které patří úprava konfigurace terminálu . To je náš případ, protože podle strace -f sbt run &
, sbt
dělá pod pokličkou spoustu černé magie, jako je tato:
[pid 16600] execve("/usr/bin/sh", ["sh", "-c", "stty -g < /dev/tty"], [/* 75 vars */] <unfinished ...>
Chcete-li to obejít, můžete spustit sbt
v jiné relaci jej odpojit od aktuálního terminálu, aby se neotevřel /dev/tty a nepletl si s naším terminálem.