La réponse d'oleg-andriyanov n'a pas fonctionné dans mon cas. (processus terminé peu de temps après le lancement)
Dans un tel cas, essayez la commande de Mirko Stocker écrite en play ML ci-dessous pour une alternative.https://groups.google.com/forum/#!topic/play-framework/ZgjrPgib0-8
# screen -d -m sbt run
Cela devrait également fonctionner
sbt -Djline.terminal=jline.UnsupportedTerminal run &
source :https://github.com/sbt/sbt/issues/701
Ressemble à sbt
l'entrée demandée à partir de votre terminal. S'il n'a pas vraiment besoin d'entrée (ce qui est probablement le cas lorsque vous exécutez le programme en arrière-plan), vous pouvez l'exécuter comme ceci :
sbt run </dev/null >output-file &
Voir cette réponse pour plus de détails.
MODIFIER
Ok, maintenant c'était un casse-tête. Réponse courte :exécutez sbt
comme suit :
setsid nohup sbt run &
Justification :
La raison pour laquelle sbt
s'arrête à l'arrivée de SIGTTOU
signal. Il est livré au processus d'arrière-plan dans plusieurs cas, qui incluent la modification de la configuration du terminal . C'est notre cas car selon strace -f sbt run &
, sbt
fait beaucoup de magie noire sous le capot comme ceci :
[pid 16600] execve("/usr/bin/sh", ["sh", "-c", "stty -g < /dev/tty"], [/* 75 vars */] <unfinished ...>
Pour contourner ce problème, vous pouvez exécuter sbt
dans une session différente pour le détacher du terminal actuel, afin qu'il n'ouvre pas /dev/tty et ne dérange pas notre terminal.