2010-04-17 79 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