Запуск SBT как Daemon

У меня есть приложение SBT scala, которое отлично работает с помощью "sbt run". Однако это блокирует консоль, и я предпочел бы запустить ее как службу/демон, чтобы я мог использовать консоль, а также чтобы я мог добавить ее в init.d, чтобы убедиться, что мое приложение запускается автоматически при запуске.

Я не могу найти способ сделать это. Запуск "sbt run &" кажется, повесил приложение в фоновом режиме.

Кто-нибудь знает, как это сделать?

Ответ 1

Мы запускаем тестовые/демонстрационные приложения с SBT в init.d все время:

#!/bin/sh
# test lift web app

case "$1" in
'start')
    cd /home/demouser/wa/HTML5DemoLift231/HTML5demo/
    sbt jetty run
    ;;
'stop')
    cd /home/demouser/wa/HTML5DemoLift231/HTML5demo/
    sbt jetty stop
    ;;
*)
    echo "Usage: $0 { start | stop }"
    ;;
esac
exit 0

Это просто работает - у нас с ним никаких проблем. Возможно, это отличается от не-веб-приложения.

Ответ 2

Вы также можете добавить свое приложение в "толстую" банку, используя sbt-assembly или sbt-onejar.

Это сделает его исполняемым банком и легко выполнится через java -jar jarname.jar.

Ответ 3

Вы можете использовать экран GNU для сохранения его в фоновом режиме. Во всяком случае, я не могу придумать повод для этого. Не лучше ли упаковать приложение и запустить сгенерированные двоичные файлы в фоновом режиме?

Ответ 4

Просто введите sbt runProd Затем нажмите Ctrl + D Процесс будет выполняться как процесс демона.