2010-04-17 78 views
5

我想在羣集上啓動erlang從節點,並收到「bash:erl:command not found」消息。雖然我有erl的別名。這是我實際做的:Erlang:啓動從節點

[[email protected] ~]$ erl -rsh ssh -sname n001  
Eshell V5.7.5 (abort with ^G) 
    ([email protected])1> slave:start_link("[email protected]", n002, "-rsh ssh"). 
    bash: erl: command not found 
           {error,timeout} 
    ([email protected])2> 

也許,有什麼問題嗎? 謝謝。

更新: 我已經將erlang bin目錄添加到了我的$ PATH變量中;我已經設置了$ ERLANG_ROOT_DIR變量; /對ERL在創建〜符號鏈接 - 但沒有什麼發生了變化? 在〜/斌/二郎目錄順便說一句,我已經安裝了二郎神......

回答

2

問題在於:bash: 其實erlang通過ssh連接到節點,在非交互模式下調用默認的sh。 但是,當bash以非交互模式啓動時,它不會讀取我的路徑變量和別名存儲在其中的.bashrc。 所以我切換到zsh,現在一切都OK了! ;)

+1

'。如果不是交互式運行,不要做任何事情 [-z「$ PS1」] && return 所以如果你在此之前定義了你的'PATH'變量,那麼你可以使用你自定義的'erl'。 Bash *確實*在非交互模式下讀取.bashrc。 – aronisstav 2013-02-26 12:21:48

1

我相信,別名將不被接受

erl需要實際上在你的路徑

另外,我相信你的.bashrc也不會執行。因此,您可能必須將「erl」符號鏈接到/ usr/bin或/ usr/local/bin

+0

謝謝你試圖幫助..但是.. 我已經添加erlang bin目錄到我的$ PATH變量;我已經設置了$ ERLANG_ROOT_DIR變量;創建符號鏈接〜/到erl - 但沒有任何改變... 順便說一句,我已經安裝erlang在〜/ bin/erlang目錄中... – Zim 2010-04-18 12:58:01

1

您似乎對start_link/3的Host字段使用a wrong format;

它應該是一個表示主機的原子,其中應該啓動節點Name(第二個參數,也是一個原子),從而生成節點Name @ Host。

所以你的情況,這將是

slave:start_link('n002', 'n002', "-rsh ssh"). 
+0

謝謝,但奴隸:start_link('n002','n002',「 rsh ssh「)。執行結果相同 - > slave:start_link('n002','n002','--rsh ssh')。 bash:erl:找不到命令 {error,timeout} – Zim 2010-04-19 13:41:28

0

我的猜測是二郎神的cookie。

你可以ping n002嗎? 如果是,那麼兩個節點是否有相同的cookie?

例如,你可以嘗試: ERL -sname ABC -rsh SSH -setcookie secretcookie

ERL>奴:啓動(N002,名稱, 「-setcookie secretcookie」)。 %%因此這兩個節點共享一個cookie

0

只需使用

>ssh [email protected] erl 

檢查ERL是N002 OK。

+0

erl在n002上可以,但仍然給出{{error,timeout}' – akin 2015-12-05 08:45:05