2011-08-27 21 views
5

Tytuł w dużym stopniu podsumowuje to. Mam stronę zotoniczną działającą z sercem, używa ona dużo czasu procesora i nie mogę uzyskać powłoki erlang. Czy istnieje sposób na zabicie vm? killall heart i killall beam.smp nie działają.Czy istnieje sposób, aby zabić erlang vm, gdy jest uruchomiony z sercem?

Znalazłem to pytanie: Stop Erlang Daemon , ale tak naprawdę nie odpowiada na moje pytanie.

+3

W moim doświadczeniu pierwsze zabijanie serca, a następnie zabijanie wiązki lub beam.smp rozwiązuje problem. –

+0

@Steve Próbowałem tego bez powodzenia. Od tego czasu stwierdziłem, że nie mogę uzyskać powłoki, a mianowicie: http://groups.google.com/group/zotonic-users/browse_thread/thread/b3971b574e405bcc?pli=1. Rozwiązałem to, rozwiązując podstawowy problem, który wydaje się :). Mimo to myślę, że jak to zrobić, powinno być lepiej udokumentowane (gdzieś). –

+1

Kill serca, a następnie wiązki, w jednym wierszu poleceń. Zawsze działa dla mnie. My (zespół Zotonic) patrzymy na rozwiązania inne niż na serce. –

Odpowiedz

2

Wystarczy użyć:

init:stop(). 

To zabije proces serca i wszystkie aplikacje.

+1

Ale on powiedział, że nie może uzyskać powłoki Erlanga, ponieważ proces wykorzystuje zbyt dużo procesora, więc nie sądzę, że to pomaga w tym konkretnym przypadku. –

+0

Och, nie zwróciłem uwagi na część "nie mogę dostać skorupy erlanga" ... – Isac

2

Miałem ten sam problem ... I naprawdę ciężko było go zabić. Próbowałem normalnych ścieżek i nie mogłem tego zrobić. Więc zrobiłem to Hack:

Najpierw przejdźmy PID

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

Więc PID 931.

Następny program, który stworzył ten proces?

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 

więc program jest .../bin/beam.smp tak po prostu przenieść go

mv beam.smp old_beam.smp 

A teraz zabijesz to

kill -9 931 

I wreszcie udało się zabij go :-)

Jest to świadectwo niezawodności erlangu, którą trzeba zhakować - aby móc zdjąć usługę.

ps: Początkowo próbowałem yaws -I [pid] - stop, ale to też nie działało.