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

发布于 2024-12-01 21:18:33 字数 289 浏览 2 评论 0原文

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

我发现这个问题: 停止 Erlang 守护进程 ,但它并没有真正回答我的问题。

The title pretty much sums it up. I have a zotonic site running with -heart, it uses lots of cpu time and I can't get an erlang shell. So, is there a way to kill the vm? killall heart and killall beam.smp are not working.

I found this question:
Stop Erlang Daemon
, but it does not really answer my question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

好倦 2024-12-08 21:18:33

只需使用:

init:stop().

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

Just use:

init:stop().

It will kill the heart process and all applications.

孤独岁月 2024-12-08 21:18:33

我也有同样的问题......
而且真的很难杀死它。
我尝试了正常的路径,但无法做到。
所以我做了这个 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

,我终于能够杀死它了:-)

这证明了 erlangs 的可靠性,人们实际上需要破解它才能关闭该服务。

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

I had this same issue....
And it was really hard to kill it.
I tried the normal paths and couldn't do it.
So I did this hack:

First let's get the PID

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

So the PID is 931.

Next which program created that process?

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

So the program is .../bin/beam.smp
so just move it

mv beam.smp old_beam.smp 

And now you kill it

kill -9 931

And I finally was able to kill it :-)

It's a testament to erlangs reliability that one actually needs to hack-it in order to be able to take down the service.

ps: I originally tried yaws -I [pid] --stop but it didn't work either.

怎樣才叫好 2024-12-08 21:18:33

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

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

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

If you don't mind killing every VM on your machine:

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

The VM and heart seem to monitor each other mutually. In case the VM is in a crash/revive loop, you may need to run this command several times quickly to kill everything dead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文