是否有一种方法可以在erlang vm以-heart模式运行时杀死它?



标题很好地概括了这一点。我有一个zotonic网站运行-heart,它使用大量的cpu时间,我不能得到一个erlang shell。那么,有办法杀死虚拟机吗?killall heartkillall beam.smp不工作

我发现了这个问题:停止Erlang守护进程

直接使用:

init:stop().

它将终止核心进程和所有应用程序。

我也有同样的问题....要杀死它真的很难。我试过正常的路径,但做不到。所以我做了这个hack:

首先让我们得到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] -stop,但它也不起作用。

如果你不介意杀死你机器上的所有虚拟机:

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

VM和heart似乎相互监视。如果虚拟机处于崩溃/复苏循环中,您可能需要快速运行此命令多次以杀死所有已死亡的内容。

相关内容

  • 没有找到相关文章

最新更新