如何重启erlang节点?

时间:2015-09-03 16:51:40

标签: linux erlang

我有git push github

的示例

这是“编程Erlang”一书中的应用实例

您可以关注README.md

我的问题是应用程序sellaprime何时开始,我

./bin/sp restart

这会使节点关闭而不重启?

Erlang Doc

  

系统重新启动内部正在运行的Erlang节点,这意味着未重新启动模拟器。所有应用程序都会顺利关闭,所有代码都会被卸载,并且所有端口都会在系统再次启动之前关闭,其方式与最初启动时相同。再次使用相同的BootArgs。

“模拟器未重启”是什么意思?

如果我想重新启动节点,那么正确的方法是什么?

顺便说一句,是否有任何API可以了解当前的发布版本,例如

application:which_applications()

1 个答案:

答案 0 :(得分:0)

使用IPluginExecutionContext.Depth脚本的sb初始化脚本看起来应该为您调用nodetool。如果这样做了,但是你的节点被关闭了,请检查你的日志是否有任何可能的错误(可能你的一个应用程序无法处理重启?)。

使用init:restart()是这样做的方法。这是一个示例:启动一个带名称的Erlang节点(在本例中为init:restart()):

test

临时启动另一个将对第一个节点进行RPC调用的节点:

$ erl -sname test
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.0  (abort with ^G)
(test@host)1> hello.
hello
(test@host)2> 

观察重启的原始节点:

$ erl -sname other -noinput -noshell -eval "rpc:call('test@host', init, restart, [])" -s init stop
$