2011-11-12 982 views
9

Para la aplicación de inicio uso Foreman. proceso de puesta capataz de ProcfileForeman no mata los procesos

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 

Si i presione Control + C en la consola donde corro capataz, capataz finaliza pero corrieron proceso no está muerto. ¿Es posible matar el proceso que el capataz ejecutó cuando el capataz mató?

+0

Estoy teniendo exactamente el mismo problema. Foreman no matará a los servidores [Faye] (http://faye.jcoglan.com/) escritos en Ruby. – Oleander

+0

+1 aquí ... Tengo problemas con Foreman matando a los servidores de Ruby Faye también. Sospecho que tiene que ver con la señal que Foreman envía a los procesos que inició para matarlos, aunque cuando inicio un servidor Faye manualmente no tengo problemas matándolo con ctrl + c. – Bryan

+1

¿Los mata con el tiempo? Según entiendo Foreman, emitirá un SIGTERM, luego 10 segundos después un SIGKILL. –

Respuesta

1

Thin no termina mientras haya conexiones abiertas. Faye usa sondeo largo o WebSockets (conexiones de larga duración). Por lo tanto, el resultado final es que Thin está esperando a que se cierren las conexiones de Faye.

Intenta activar los controladores de señal instalados por Thin y deberías estar bien.

8

ejemplo siguiente se supone puerto utilizado es 4567, y luego hacer:

lsof -i :4567 

Esto le da el pid del proceso, por ejemplo 34564, y luego matarlo con

kill -9 34564 

Si se encuentra en las ventanas , instale cygwin para obtener los comandos lsof y kill.

+0

Y si no quiere buscar el PID, puede usar el capataz 'killall": maestro "' – harianus

0

He reunido un poco de una sola línea que encuentra los identificadores de proceso y mata a los procesos

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

En este caso, estoy corriendo procesos de Python en el puerto 5000, pero puede que esté ejecutando alguna otra tipo de procesos en otros puertos, por lo que tendrá que personalizar esta línea en consecuencia.

Cuestiones relacionadas