标题几乎总结了它。我有一个运行-heart的zotonic站点,它使用了大量的cpu时间,我无法得到一个erlang shell。那么,有没有办法杀死虚拟机? killall heart
和killall beam.smp
无效。
我发现了这个问题: Stop Erlang Daemon ,但它并没有真正回答我的问题。
答案 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
似乎互相监视。如果虚拟机处于崩溃/重新启动循环中,则可能需要快速运行几次此命令以杀死所有死机。