在Ubuntu 10.4中使用自定义Erlang时,在escript中启动Erlang从属节点失败
我有以下描述:在Ubuntu 10.4中使用自定义Erlang时,在escript中启动Erlang从属节点失败,ubuntu,erlang,Ubuntu,Erlang,我有以下描述: #!/usr/bin/env escript %%! -name test_starter@127.0.0.1 main(_) -> NodeName = test, Host = '127.0.0.1', Args = "", {ok, _Node} = slave:start_link(Host, NodeName, Args), io:format("Node started successfully!"). 在Ubunt
#!/usr/bin/env escript
%%! -name test_starter@127.0.0.1
main(_) ->
NodeName = test,
Host = '127.0.0.1',
Args = "",
{ok, _Node} = slave:start_link(Host, NodeName, Args),
io:format("Node started successfully!").
在Ubuntu10.04上运行时,我发现:
$ ./start_slave
Node started successfully!
$
我想安装我自己的Erlang(最新版本,dialyzer的调试编译文件等),因为Ubuntu上的Erlang库存安装缺少一些功能。我将Erlang二进制文件放入~/Applications/bin
中。启动Erlang正常工作,在Erlang外壳中启动从属节点也可以工作
然而,现在我的描述不起作用了。大约60秒后,它返回一个错误:
$ ./start_slave
escript: exception error: no match of right hand side value {error,timeout}
即使我将第一行更改为escript以使用我的erlang版本,它仍然不起作用:
#!/home/user/Applications/bin/escript
从节点通过调用erlang:open_port/2
启动,该调用似乎在使用sh
,而该调用不会读取设置自定义路径的环境变量的.bashrc
文件。当slave:start_link/3
等待从节点响应时,似乎会发生超时,而从节点从未响应过
我如何在Ubuntu10.4上启动自己的Erlang安装并在escripts中启动从属节点
更新:我尝试在/etc/environment
中添加自定义Erlang的路径(Ubuntu中设置了原始的路径),但这并没有改变任何事情
更新2:接受给出的唯一答案(即使它没有解决问题)。Ubuntu和Erlang版本现在有点旧了,这可能不再是一个问题。从属节点是否可能与其他Erlang安装一起运行?在我看到的“Erlang节点有不同的Cookie”中,超时错误的原因列在下面,我相信这种情况可能会发生
如果是这种情况,在等待超时的同时运行ps-FC erlang
应该会显示具有不同路径的进程。是否确实要使用start\u link
而不是start
?这样,当脚本自行终止时(在调用main之后出现),从属服务器会自动退出。请参阅start\u link
的文档。关键是节点启动时间甚至在“start\u link/3返回”之前就已超时。此外,关键是要运行测试,因此我可以在脚本死亡时让节点死亡。:-)它实际上没有启动,或者启动后立即崩溃。我看不到从属节点的进程。在任何情况下,它都应该使用相同的cookie,因为我在~/.erlang.cookie
中设置了它,因为没有给出其他答案,所以接受此答案。但是,我从来没有发现如何解决这个问题-(