скрипт для запуска кода Erlang - PullRequest
3 голосов
/ 13 декабря 2010

Я пытаюсь создать скрипт на Ubuntu, чтобы запустить мой Erlang-код:

скрипт выглядит примерно так:

#!/bin/sh

EBIN=$HOME/path_to_beams

ERL=/usr/local/bin/erl
export HEART_COMMAND="$EBIN/starting_script start"

case $1 in

  start)
    $ERL -sname mynode -pa $EBIN \
         -heart -detached -s my_module start_link
    ;;

  *)
    echo "Usage: $0 {start|stop|debug}"
    exit 1
esac

exit 0

, но у меня возникла пара проблем.

Прежде всего, код может быть выполнен только в том случае, если скрипт находится в той же директории, что и лучи, мне это странно, я дважды проверил пути, так почему же флаг -pa не установленработать?

Во-вторых, скрипт (без -pa) работает нормально, но если я попытаюсь запустить вместо основного модуля (gen_server) его супервизор (-s my_module_sup start_link), он не будет работать...это странно, потому что, если я запускаю супервизор из обычной оболочки, все работает нормально.

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

Может кто-нибудь дать мне несколько советов?

Заранее спасибо,

pdn

1 Ответ

1 голос
/ 13 декабря 2010

Первое, что приходит на ум, это то, что вы используете erlexport вместо erl.Не уверен, зачем ты это делаешь (раньше я не слышал о erlexport).Попробуйте вместо этого erl.

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

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