2010-12-13 64 views
3

我试图建立在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

,想到的第一件事是,你正在使用erlexport代替erl。不知道你为什么这样做(我以前没有听说过erlexport)。改为使用erl来尝试。

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

+0

嗨,我猜想在剪切和粘贴时出现问题,命令当然是erl,那么出口部分有一个新行... – pdn 2010-12-14 10:46:33