Форман не убивает процессы - PullRequest
9 голосов
/ 12 ноября 2011

Для запуска приложения я использую Форман.Начать процесс мастера из Procfile

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

Если я нажму control + C в консоли, где я запускаю мастера, мастер завершается, но запущенный процесс не прерывается.Возможно ли убить процесс, который выполнялся мастером, когда мастер убил.

Ответы [ 3 ]

8 голосов
/ 03 февраля 2012

В приведенном ниже примере предполагается, что используется порт 4567, затем выполните:

lsof -i :4567

Это дает вам pid процесса, скажем, 34564, затем убейте его с помощью

kill -9 34564

Если вы работаете в Windows, установите cygwin , чтобы получить lsof и kill команды.

1 голос
/ 02 февраля 2012

Тонкий не прерывается, пока есть открытые соединения.Фэй использует длинные опросы или WebSockets (длительные соединения).Таким образом, в результате Thin ожидает закрытия ваших соединений Faye.

Попробуйте повернуть обработчики сигналов, установленные Thin, и все будет в порядке.

0 голосов
/ 20 декабря 2012

Я собрал небольшую однострочную строку, которая находит идентификаторы процессов и убивает процессы

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

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

...