Erlang:如何从其他节点的节点()中删除节点?

Mic*_*rry 4 erlang configuration networking cluster-computing erlang-otp

我想动态地模拟 but 的行为erl -sname example -hidden。如何使节点在集群中不再可见?

请参阅 @mwt 在 @Yasir Arsanukaev 的评论,以进一步说明我正在尝试做的事情。

Yas*_*aev 5

尝试erlang:disconnect_node/1

(bar@dt)1> nodes().
[]
(bar@dt)2> net_adm:ping('foo@dt').          
pong
(bar@dt)3> nodes().               
[foo@dt]
(bar@dt)4> erlang:disconnect_node('foo@dt').
true
(bar@dt)5> nodes().                         
[]
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望一个节点将其自身从其他节点中删除nodes()

(bar@dt)1> nodes().
[foo@dt]
(bar@dt)2> rpc:eval_everywhere(erlang, disconnect_node, [node()]).
abcast
(bar@dt)3> nodes().
[]
Run Code Online (Sandbox Code Playgroud)

如果节点是用 key 启动的-hidden

(bar@dt)1> nodes(hidden).
[foo@dt]
(bar@dt)2> rpc:eval_everywhere(nodes(hidden), erlang, disconnect_node, [node()]).
abcast
(bar@dt)3> nodes(hidden).
[]
Run Code Online (Sandbox Code Playgroud)