5

标题几乎概括了它。我有一个使用 -heart 运行的 zotonic 站点,它使用大量 cpu 时间,而且我无法获得 erlang shell。那么,有没有办法杀死虚拟机?killall heart并且killall beam.smp不工作。

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

4

3 回答 3

3

只需使用:

init:stop().

它将杀死心脏进程和所有应用程序。

于 2011-08-29T18:14:55.920 回答
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

我终于能够杀死它:-)

这证明了 erlangs 的可靠性,一个人实际上需要破解它才能取消服务。

ps:我最初尝试了 yaws -I [pid] --stop 但它也不起作用。

于 2013-02-06T23:27:45.123 回答
0

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

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

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

于 2018-07-05T04:40:16.273 回答