脚本启动erlang代码

时间:2010-12-13 14:27:51

标签: erlang

我正在尝试在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)它不起作用......这很奇怪,因为如果我从普通shell启动主管,一切正常。

第三,-heart标志应该在发生故障的情况下重新启动脚本,但如果我用正常的Unix kill杀死进程,则不会重启该进程。

有人可以给我一些提示吗?

提前致谢,

PDN

1 个答案:

答案 0 :(得分:1)

首先想到的是,您使用的是erlexport而不是erl。不确定你为什么要这样做(我之前没有听说过erlexport)。请尝试使用erl

如果Erlang节点本身被杀死,那么-heart标志将没有意义,因为该进程无法保持活动状态。您需要运行另一个监视Erlang进程的进程,并在被杀死时重新启动它。