5
除了运行$ killall -9 beam.smp
,当我知道它的-sname
时,如何以编程方式终止Erlang节点?停止Erlang守护进程
如果我不想让心跳监视器重新启动过程,我如何确保对上述问题给出的任何答案也会消除心跳?
是否有一个体面的指南来部署Erlang作为守护进程?
除了运行$ killall -9 beam.smp
,当我知道它的-sname
时,如何以编程方式终止Erlang节点?停止Erlang守护进程
如果我不想让心跳监视器重新启动过程,我如何确保对上述问题给出的任何答案也会消除心跳?
是否有一个体面的指南来部署Erlang作为守护进程?
kill
and killall
with is 几乎总是错的。
你可以很容易地让远程节点使用退出:
rpc:call(RemoteNode, init, stop, []).
我不知道这是否会阻止heart
从重新启动它,但我建议,如果你希望停止,你不应该以永不停止的模式运行它。
更新 - 捷思锐指出:init:stop
做正确的事与heart
,因此上述rpc:call
是做到这一点的最佳和唯一途径。 “
”init:stop():...如果给出了-heart命令行标志,那么心脏程序在Erlang节点终止之前终止......“ – Zed 2010-01-25 07:41:36
我认为我的节点没有完全连接。我确定我忽略了一些东西。为了测试,我打开了两个终端窗口并在其中运行了'erl -sname foo',然后从中获取了cookie并运行了'erl -sname bar -setcookie'...''。在这个窗口中,我运行了'net_adm:ping('foo @ elife')',但它给了我一个'庞'。我已经尝试过一些变种,都没有运气。任何想法我做错了什么? – Eli 2010-01-25 16:07:02
你为什么要在一个而不是另一个上执行'-setcookie'?如果它们不匹配,你就不能说话。通常,我只在我的本地节点上使用'〜/ .erlang.cookie'。 – Dustin 2010-01-25 18:14:52