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

Erlang 如何通过命令行作为守护进程启动应用程序?,erlang,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上断开链接,它会因为某种原因立即停止。

这是我目前的惯例

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上断开链接,它会因为某种原因立即停止。有没有一种方法可以让我像平常一样启动我的应用程序ie应用程序:start(foo)。如果我也想开始sasl呢?另外,我在哪里可以了解到有关使用钢筋制作独立软件包的更多信息?

前言。关于您的取消链接

在@filippo中,解释了为什么在测试shell中的监控程序时需要取消链接

首先。您需要的是一个新的解决方案。

从文件中读取:

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

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

  • 谢谢你的申请
  • 编写一个实现Erlang应用程序行为的示例。您将从这里开始您的根主管
  • 。这是告诉系统在哪里可以找到应用程序回调模块的地方(查看
    mod
    参数)
秒。启动SASL。

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

...
{applications, [kernel, stdlib, sasl]},
...
让它启动SASL

第三。钢筋。

这里有一个关于钢筋的介绍,它解释了如何使用钢筋在上述步骤中帮助您,将全新的应用程序打包到中,以及如何启动它