【问题标题】:How do I start applications by command line as a daemon?如何通过命令行启动应用程序作为守护进程?
【发布时间】:2011-07-17 00:12:56
【问题描述】:

这是我目前的例行公事

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 的链接,它会由于某种原因立即停止。有没有一种方法可以像通常那样启动我的应用程序,即 application:start(foo)。另外,如果我也想启动 sasl 怎么办?另外,我在哪里可以了解有关使用钢筋制作独立包装的更多信息?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    前言。关于您的取消链接

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

    首先。您需要的是Erlang application

    阅读文档:

    在 OTP 中,应用程序表示一个 实现一些特定的组件 功能,可以启动和 作为一个单元停止,并且可以 也可以在其他系统中重复使用。

    有关如何实现 Erlang 应用程序的详细信息,请参阅here。您需要做的三件事主要是:

    第二。启动 SASL。

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

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

    告诉它启动 SASL。

    第三。钢筋。

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

    【讨论】:

      猜你喜欢
      • 2012-06-25
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2023-03-02
      • 1970-01-01
      相关资源
      最近更新 更多