Каков наилучший способ остановить процесс Unicorn Server? Всякий раз, когда я пытаюсь остановить его с помощью kill -p 90234
, он не работает. Скорее всего, я что-то делаю неправильно.
Спасибо.
Каков наилучший способ остановить процесс Unicorn Server? Всякий раз, когда я пытаюсь остановить его с помощью kill -p 90234
, он не работает. Скорее всего, я что-то делаю неправильно.
Спасибо.
Простые вещи там - в терминале типа "ps" и посмотрите на процесс мастер-единорога. Скопируйте PID, а затем введите "kill -9 90234" (где 90234 - это PID ведущего единорога). После этого рабочий процесс должен исчезнуть сам.
Посмотрите страницу СИГНАЛОВ Юникорна. Если ведущий ведет себя правильно, и вы просто хотите отключить его, вы должны отправить сигнал QUIT:
kill -QUIT 1234 # where 1234 is the real process id, of course
Это изящно останавливает всех рабочих, позволяя им закончить любые запросы, которые они посещают.
Я использую это:
ps aux | grep 'unicorn' | awk '{print $2}' | xargs sudo kill -9
Я только что посмотрел на это через два месяца. Это сумасшествие, и не используйте это, если у вас есть более одного мастера Единорога, и вы только хотите убить одного из них.
Интересно, что никто не считал файл pid, созданный единорогом? Моя обычная конфигурация помещает его в. /tmp/unicorn.pid, поэтому, возможно, самый безопасный способ -
kill -QUIT `cat tmp/unicorn.pid`
а файл pid затем удаляется удаляемым процессом. Я всегда ставил файл pid в одном и том же относительном месте, поэтому, я думаю, я мог бы использовать его для удобства, хотя, когда я занимаюсь разработкой, я обычно не демоннирую единорога.
Я бы, вероятно, пошел:
sudo pkill unicorn_rails
ps aux | grep unicorn
#=> root 4393 2.0 0.9 65448 20764 ? S 20:06 0:35 unicorn_rails m
kill 4393
В конечном счете ключ - это следующая строка, которая нацелена на мастер-процесс единорога и убивает его.
kill $(ps aux | grep '[u]nicorn_rails master' | awk '{print $2}')
Обычно я ленив и просто убиваю по имени:
$ killall processname
для тех, кто использует шеф-повар, и видя, что ни одно из вышеприведенных действий не работает (потому что процессы возрождаются, как только вы их убиваете):
sudo sv stop APP_NAME
sv
- это управление для runit
.
Чтобы выйти из определенного сервера Unicorn, вы можете использовать что-то вроде следующего:
pkill -QUIT --pidfile /path/to/app/shared/tmp/pids/unicorn.pid
Таким образом, вы можете выборочно убить любой процесс, и вам не нужно использовать оценку/расширение оболочки, которая может быть недоступна.