有没有办法在使用-heart运行时杀死erlang vm?

时间:2011-08-27 22:51:11

标签: erlang heartbeat zotonic

标题几乎总结了它。我有一个运行-heart的zotonic站点,它使用了大量的cpu时间,我无法得到一个erlang shell。那么,有没有办法杀死虚拟机? killall heartkillall beam.smp无效。

我发现了这个问题: Stop Erlang Daemon ,但它并没有真正回答我的问题。

3 个答案:

答案 0 :(得分:3)

只需使用:

init:stop().

它会杀死心脏病过程和所有应用程序。

答案 1 :(得分:2)

我有同样的问题.... 杀死它真的很难。 我尝试了正常的路径而无法做到。 所以我做了这个黑客:

首先让我们得到PID

sudo netstat -tulpn |grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      931/beam.smp    

所以PID是931。

接下来哪个程序创建了该过程?

lsof -p 931 | grep txt
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/agarcia/.gvfs
      Output information may be incomplete.
beam.smp 931 yaws  txt    REG     8,1  2053256 22793377 /usr/lib/erlang/erts-5.8.5/bin/beam.smp

所以程序是...... / bin / beam.smp 所以只需移动它

mv beam.smp old_beam.smp 

现在你杀了它

kill -9 931

我终于能够杀了它: - )

这是对erlang可靠性的证明,实际上需要破解它才能能够取消服务。

ps:我最初尝试过yaws -I [pid] - 停止但它也没有用。

答案 2 :(得分:0)

如果您不介意杀死计算机上的每个VM:

ps aux | grep -e heart -e epmd | grep -v grep | tr -s ' ' | cut -d ' ' -f 2 | xargs kill -9

VM和heart似乎互相监视。如果虚拟机处于崩溃/重新启动循环中,则可能需要快速运行几次此命令以杀死所有死机。