2011-11-12 15 views
9

Do uruchomienia aplikacji używam Foreman. Foreman proces startu z ProcfileForeman nie zabija procesów

web: bundle exec rails server thin -p $PORT 
worker: bundle exec rake environment resque:work QUEUE=send_mail 
api: bundle exec rails server thin -p $PORT 

Jeśli i naciśnij Ctrl + C w konsoli, gdzie biegnę majster, brygadzista jest zakończony, ale prowadził proces nie został zabity. Czy możliwe jest zabicie procesu, który prowadził brygadzista, gdy brygadzista zabił.

+0

Mam dokładnie ten sam problem. Foreman nie zabije serwerów [Faye] (http://faye.jcoglan.com/) napisanych w Ruby. – Oleander

+0

+1 tutaj ... Mam problemy z Foremanem zabijającym również serwery Ruby Faye. Podejrzewam, że ma to związek z sygnałem, który Foreman wysyła do procesów, które zostały uruchomione, aby je zabić, chociaż kiedy ręcznie uruchamiam serwer Faye, nie mam problemów z zabiciem go za pomocą ctrl + c. – Bryan

+1

Czy to ostatecznie zabije? Jak rozumiem Foreman, wyda SIGTERM, a 10 sekund później SIGKILL. –

Odpowiedz

1

Cienki nie kończy się tak długo, jak istnieją otwarte połączenia. Faye korzysta z funkcji Long-Polling lub WebSockets (trwałe połączenia). Rezultat końcowy jest taki, że Thin czeka na zamknięcie połączeń Faye.

Spróbuj włączyć obsługę sygnałów zainstalowanych przez Thin i wszystko powinno być w porządku.

8

Przykład poniżej zakłada port używany jest 4567, a następnie wykonaj:

lsof -i :4567 

Daje to PID procesu, powiedzmy 34564, a następnie zabić go

kill -9 34564 

Jeśli jesteś na oknach , zainstaluj cygwin, aby uzyskać komendy lsof i kill.

+0

A jeśli nie chcesz szukać PID, możesz użyć brygadzisty "killall": master "' – harianus

0

mam zmontowany trochę jedno-liner który wyszukuje identyfikatory procesów i zabija procesy

kill -9 `lsof -P -i :5000 | sed -n 's/python *\([0-9]*\).*\:5000.*/\1/p'` 

W tym przypadku, biegnę procesy Pythona na porcie 5000, ale może być uruchomiony jakiś inny typ procesów na innych portach, więc musisz odpowiednio dostosować ten jeden liner.

Powiązane problemy