标题很好地概括了这一点。我有一个zotonic网站运行-heart,它使用大量的cpu时间,我不能得到一个erlang shell。那么,有办法杀死虚拟机吗?killall heart
和killall 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
似乎相互监视。如果虚拟机处于崩溃/复苏循环中,您可能需要快速运行此命令多次以杀死所有已死亡的内容。