将SBT作为守护进程运行

时间:2011-05-14 07:13:15

标签: scala sbt

我有一个使用“sbt run”运行良好的SBT scala应用程序。但是,这会锁定控制台,我宁愿将其作为服务/守护程序启动,以便我可以使用控制台,以便我可以将其添加到init.d以确保我的应用程序在启动时自动启动

我似乎找不到办法做到这一点。运行“sbt run&”好像在后台挂了应用程序。

有人知道怎么做吗?

4 个答案:

答案 0 :(得分:9)

您还可以使用sbt-assemblysbt-onejar将您的应用程序装入“胖”罐中。

这将使它成为一个可执行jar,并可通过java -jar jarname.jar轻松运行。

答案 1 :(得分:8)

我们始终在init.d中使用SBT启动测试/演示应用程序:

#!/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

这只是有效 - 我们没有遇到任何问题。但是,对于非Web应用程序可能会有所不同。

答案 2 :(得分:6)

您可以使用GNU Screen将其保留在后台。无论如何,我不能认为这是一个很好的理由。打包应用程序并在后台运行生成的二进制文件不是更好吗?

答案 3 :(得分:1)

输入sbt runProd 然后按Ctrl + D. 该进程将作为守护进程运行。