Есть ли способ убить erlang vm, когда он работает с -heart? - PullRequest
5 голосов
/ 28 августа 2011

Название в значительной степени подводит итог.У меня есть зотонический сайт, работающий с -heart, он использует много процессорного времени, и я не могу получить оболочку erlang.Так есть ли способ убить виртуальную машину?killall heart и killall beam.smp не работают.

Я нашел этот вопрос: Остановите Erlang Daemon , но на самом деле он не отвечает на мой вопрос.

Ответы [ 3 ]

3 голосов
/ 29 августа 2011

Просто используйте:

init:stop().

Это убьет сердечный процесс и все приложения.

2 голосов
/ 07 февраля 2013

У меня была такая же проблема .... И это было действительно трудно убить.Я пробовал нормальные пути и не мог этого сделать.Итак, я сделал этот хак:

Сначала давайте получим 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

И я наконец смогубей его: -)

Это свидетельство надежности эрланга, которую нужно взломать, чтобы иметь возможность отключить службу.

ps: я изначально пробовал тявкать -I[pid] - остановить, но это тоже не сработало.

0 голосов
/ 05 июля 2018

Если вы не против убить каждую виртуальную машину на вашем компьютере:

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

Кажется, что виртуальная машина и heart взаимно контролируют друг друга.В случае, если виртуальная машина находится в цикле сбоя / восстановления, вам может потребоваться выполнить эту команду несколько раз быстро, чтобы уничтожить все мертвые.

...