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

发布于 2024-10-24 05:53:10 字数 423 浏览 1 评论 0原文

这是我当前的例程

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 怎么办?另外,我在哪里可以了解有关使用钢筋制作独立包装的更多信息?

This has been my current routine

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

where the shell function looks something like this

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

If I don't unlink from shell it immediately stops for some reason. Is there a way I can just start my application like I would normally ie application:start(foo). Also what if I want to start sasl too? Also where could I learn more about making a self contained package using rebar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ヤ经典坏疍 2024-10-31 05:53:10

前言。关于您的取消链接

这个其他SO线程中@filippo解释了为什么您需要<当从 shell 测试 Supervisor 时,使用 code>unlink 。

首先。您需要的是 Erlang 应用程序

从文档中阅读:

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

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

第二。启动SASL。

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

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

告诉它启动 SASL。

第三。

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

Preface. About your unlink

In this other SO thread @filippo explains why you need the unlink when testing supervisors from the shell.

First. What you need is an Erlang application.

Reading from the doc:

In OTP, application denotes a
component implementing some specific
functionality, that can be started and
stopped as a unit, and which can be
re-used in other systems as well.

Details on how to implement an Erlang application are available here. The three main things you will need to do are:

Second. Starting SASL.

In the above application resource file, you can specify a list of applications you want to start before your application. You will add something like:

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

To tell it to start SASL.

Third. Rebar.

There's an introduction to Rebar here, which explains you how to use Rebar to help you in the above steps, to pack your brand new application into an Erlang release and how to start it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文