2011-11-12 12 views
9

Per l'applicazione iniziale utilizzo Foreman. Foreman processo di avvio da ProcfileForeman non uccide i processi

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 

se premo Ctrl + C nella console in cui corro caposquadra, caposquadra viene terminata, ma processo di corse non viene ucciso. È possibile uccidere il processo che il caposquadra ha funzionato quando il caposquadra è stato ucciso.

+0

Ho lo stesso identico problema. Foreman non ucciderà i server [Faye] (http://faye.jcoglan.com/) scritti in Ruby. – Oleander

+0

+1 qui ... Ho problemi con Foreman che uccide anche i server Ruby Faye. Sospetto che abbia a che fare con il segnale che Foreman invia ai processi è iniziato per ucciderli, anche se quando avvio un server Faye manualmente non ho problemi a ucciderlo con ctrl + c. – Bryan

+1

Alla fine li uccide? Come capisco Foreman, emetterà un SIGTERM, quindi 10 secondi dopo un SIGKILL. –

risposta

1

Il sottile non termina finché ci sono connessioni aperte. Faye utilizza il polling lungo o WebSocket (connessioni di lunga durata). Quindi il risultato finale è che Thin sta aspettando la chiusura delle connessioni Faye.

Provare a girare i gestori di segnale installati da Thin e si dovrebbe andare bene.

8

esempio che segue presuppone porta utilizzata è 4567, poi fare:

lsof -i :4567 

Questo vi dà il pid del processo, ad esempio 34564, poi uccidere con

kill -9 34564 

Se siete su Windows , installa cygwin per ottenere i comandi lsof e kill.

+0

E se non si desidera cercare il PID, è possibile utilizzare "killall" foreman: master "" – harianus

0

ho assemblato un po 'one-liner che trova gli ID di processo e uccide i processi

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

In questo caso, sto correndo processi pitone sulla porta 5000, ma si potrebbe essere in esecuzione qualche altro tipo di processi su altre porte, quindi è necessario personalizzare di conseguenza questa one-liner.

Problemi correlati