【发布时间】:2010-01-26 02:12:48
【问题描述】:
除了运行$ killall -9 beam.smp,当我知道它的-sname 时,如何以编程方式杀死Erlang 节点?
如果我不希望心跳监视器重新启动进程,如何确保对上述问题给出的任何答案也会终止心跳?
是否有关于将 Erlang 部署为守护进程的体面指南?
【问题讨论】:
除了运行$ killall -9 beam.smp,当我知道它的-sname 时,如何以编程方式杀死Erlang 节点?
如果我不希望心跳监视器重新启动进程,如何确保对上述问题给出的任何答案也会终止心跳?
是否有关于将 Erlang 部署为守护进程的体面指南?
【问题讨论】:
kill 和 killall 与 -9几乎总是错误的。
您可以很容易地使用以下命令要求远程节点退出:
rpc:call(RemoteNode, init, stop, []).
我不知道这是否会阻止heart 重新启动它,但我建议如果您希望停止它,您不应该在永不停止模式下运行它。
更新 - Zed 指出init:stop 对heart 做了正确的事情,所以上面的rpc:call 是最好的也是唯一的方法。
【讨论】:
erl -sname foo,然后从中获取cookie 并运行erl -sname bar -setcookie '...'。在这个窗口中,我运行了net_adm:ping('foo@elife'),但它给了我一个“痛苦”。我已经尝试了一些变体,但都没有运气。知道我做错了什么吗?
-setcookie?如果他们不匹配,你就不能说话。一般来说,我只是在本地节点上使用~/.erlang.cookie。
-name something@127.0.0.1,它应该可以工作。