我有一个使用“sbt run”运行良好的SBT scala应用程序。但是,这会锁定控制台,我宁愿将其作为服务/守护程序启动,以便我可以使用控制台,以便我可以将其添加到init.d以确保我的应用程序在启动时自动启动
我似乎找不到办法做到这一点。运行“sbt run&”好像在后台挂了应用程序。
有人知道怎么做吗?
答案 0 :(得分:9)
您还可以使用sbt-assembly或sbt-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. 该进程将作为守护进程运行。