2010-12-13 83 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