如何通过命令行作为守护程序启动应用程序?

时间:2011-03-16 22:47:59

标签: erlang

这是我目前的常规

sudo nohup erl -sname foo -pa ./ebin -run foo_supervisor shell -noshell -noinput &

shell函数看起来像这样

shell() ->
    {ok, Pid} = supervisor:start_link({local,?MODULE}, ?MODULE, _Arg = []),
    unlink(Pid).

如果我不从shell取消链接,它会因某种原因立即停止。有没有办法可以像我通常那样启动我的应用程序,即应用程序:start(foo)。如果我也想开始sasl怎么办?另外,我还可以在哪里了解更多关于使用钢筋制作自包装的信息?

1 个答案:

答案 0 :(得分:4)

<强>序。关于取消关联

this other SO thread @filippo解释了为什么在测试shell中的主管时需要unlink

<强>首先。您需要的是Erlang application

阅读文档:

  

在OTP中,申请表示a   实现某些特定的组件   功能,可以启动和   作为一个单位停止,哪个可以   也可以在其他系统中重复使用。

有关如何实施Erlang应用程序的详细信息here。您需要做的三件事是:

<强>二。启动SASL。

在上面的应用程序资源文件中,您可以指定要在应用程序之前启动的应用程序列表。您将添加以下内容:

...
{applications, [kernel, stdlib, sasl]},
...

告诉它启动SASL。

<强>第三。钢筋。

介绍了Rebar here,它解释了如何使用Rebar帮助您完成上述步骤,将全新的应用程序打包到Erlang release以及如何启动它。