Erlang:启动从节点

时间:2010-04-17 15:33:42

标签: erlang cluster-computing

我正在尝试在群集上启动erlang slave节点,并且收到“bash:erl:command not found”消息。虽然我有erl的别名。这是我实际做的事情:

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

也许,有什么不对劲? 感谢。

更新: 我已经在我的$ PATH变量中添加了erlang bin dir;我设置了$ ERLANG_ROOT_DIR变量;在〜/中创建了符号链接 - 但没有任何改变...... 顺便说一句,我在〜/ bin / erlang目录中安装了erlang ...

5 个答案:

答案 0 :(得分:2)

麻烦在于bash: 实际上,erlang通过ssh连接到节点,在非交互模式下调用默认的sh。 但是当bash以非交互模式启动时,它不会读取.bashrc,其中存储了路径变量和别名。 所以我切换到zsh,一切都好了! ;)

答案 1 :(得分:1)

我相信别名不会被尊重

erl需要真正进入你的道路

另外,我相信你的.bashrc也不会执行。所以你可能需要将“erl”符号链接到/ usr / bin或/ usr / local / bin

答案 2 :(得分:1)

您似乎正在使用a wrong format作为start_link / 3的主机字段;

它应该是一个表示主机的原子,其中应该启动节点名称(第二个参数,也是一个原子),从而产生节点Name @ Host。

所以在你的情况下会是

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

答案 3 :(得分:0)

我的猜测是erlang cookie。

你可以ping n002吗? 如果是,那么这两个节点是否具有相同的cookie?

例如你可以试试: erl -sname abc -rsh ssh -setcookie secretcookie

ERL>奴隶:开始(n002,名字,“ - setcookie secretcookie”)。 %%所以这两个节点共享一个cookie

答案 4 :(得分:0)

只需使用

>ssh user@n002 erl

检查n002上的erl是否正常。