如何通过命令行将应用程序作为守护程序启动?
问题描述:
这一直是我目前的日常如何通过命令行将应用程序作为守护程序启动?
sudo nohup erl -sname foo -pa ./ebin -run foo_supervisor shell -noshell -noinput &
其中壳功能看起来像这样
shell() ->
{ok, Pid} = supervisor:start_link({local,?MODULE}, ?MODULE, _Arg = []),
unlink(Pid).
如果我不从外壳断开链接立即停止出于某种原因。有没有一种方法可以像我通常的应用程序那样启动我的应用程序:start(foo)。另外如果我想开始sasl呢?我还可以在哪里了解更多关于使用螺纹钢制作自包含软件包的信息?
答
前言。关于您的取消链接
在this other SO thread @filippo解释了为什么在从shell中测试主管时需要unlink
。
首先。你需要的是一个Erlang application。
从DOC读:
在OTP,应用表示 部件实现某些特定 功能,可以启动和 停止作为一个单元,并且其可以是 重复使用其他系统也是如此。
有关如何实现Erlang应用程序的详细信息,请访问here。你需要做的三个主要的事情是:
- Have a proper directory structure为您的应用
- 写一个application callback module实现Erlang的应用程序的行为。这就是你将开始你的根监督的地方
-
Provide an application resource file。这是您告诉系统的地方 - 其中包括 - 在哪里查找应用程序回调模块(请参阅
mod
参数)。
二。开始SASL。
在上述应用程序资源文件中,您可以指定要在应用程序之前启动的应用程序的列表。您将添加如下内容:
...
{applications, [kernel, stdlib, sasl]},
...
告诉它启动SASL。
三。钢筋。
有螺纹钢here介绍,这也解释了如何使用钢筋,以帮助你在上面的步骤,收拾你的品牌新的应用程序转换成Erlang release以及如何启动它。
三个不同的问题? – AbiusX 2011-03-16 22:50:31