我正在尝试在群集上启动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 ...
答案 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 secretcookieERL>奴隶:开始(n002,名字,“ - setcookie secretcookie”)。 %%所以这两个节点共享一个cookie
答案 4 :(得分:0)
只需使用
>ssh user@n002 erl
检查n002上的erl是否正常。