Как запустить приложения из командной строки в качестве демона? - PullRequest
2 голосов
/ 17 марта 2011

Это была моя текущая рутина

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).

Если я не отсоединяюсь от оболочки, она по какой-то причине немедленно останавливается. Есть ли способ, с помощью которого я могу просто запустить свое приложение, как обычно, то есть application: start (foo). И что, если я тоже хочу начать sasl? Также, где я мог бы узнать больше о создании автономной упаковки с использованием арматуры?

1 Ответ

4 голосов
/ 17 марта 2011

Введение.О вашей ссылке

В этот другой поток SO @filippo объясняет, почему вам нужен unlink при тестировании супервизоров из оболочки.

Первый,Вам нужно приложение Erlang .

Чтение из документа:

В OTP приложение обозначает компонент, реализующий некоторые специфические функции, которыеможет запускаться и останавливаться как единое целое, а также использоваться повторно в других системах.

Подробная информация о том, как реализовать приложение Erlang, доступна здесь .Три основные вещи, которые вам нужно сделать:

Секунда.Запуск SASL.

В приведенном выше файле ресурсов приложения вы можете указать список приложений, которые вы хотите запустить перед вашим приложением.Вы добавите что-то вроде:

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

Чтобы сказать ему, чтобы запустить SASL.

Третий.Rebar.

Здесь есть введение в Rebar здесь , которое объясняет вам, как использовать Rebar, чтобы помочь вам в вышеуказанных шагах, чтобы упаковать ваше новое приложение в Erlang релиз и как его запустить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...