Вы можете найти процесс rails с помощью команды ps
следующим образом:
➜ ps aux
Вы видите список всего, что работает в вашей системе. Найдите строку, показывающую ваше приложение Rails.
Например, я использую Passenger для запуска своего приложения, имя моего приложения «демо», а моя строка процесса:
me 30704 0.0 2.0 705696 155300 ? Sl 18:58 0:01 Passenger RackApp: demo
Строка процесса показывает вам два элемента, которые могут вам понадобиться:
Второй элемент — это идентификатор процесса, также известный как PID.
Конечный текст — это имя работающего приложения и его аргументов.
Убейте процесс, отправив сигнал INT в PID:
➜ kill -s INT 30704
Сигналы, которые вам могут понадобиться:
INT
означает «программное прерывание» и отправляется, когда пользователь вводит символ INTR (обычно C-c).
TERM
— это общий вежливый способ попросить программу завершить работу.
KILL
вызывает немедленное завершение программы. Его нельзя обработать, проигнорировать или заблокировать.
Если вам нужно сделать это более одного раза, то есть ярлыки.
Чтобы найти строку процесса, вы можете использовать grep
или подобные инструменты, такие как pgrep
или pidof
.
➜ ps aux | grep Passenger
Чтобы найти идентификатор процесса, вы можете использовать awk
для вывода второго элемента строки:
➜ ps aux | grep Passenger | awk '{print $2}'
Чтобы убить все процессы с определенным шаблоном в имени или аргументах, вы можете использовать pkill
:
➜ pkill -f Passenger
person
joelparkerhenderson
schedule
12.01.2015
kill
. Или вы можете потратить 10 долларов и получить внешнюю клавиатуру. - person Chris Heald   schedule 12.01.2015kill
посылает вам сигнал (по умолчаниюSIGTERM
). Вы делаетеkill pid
, гдеpid
— идентификатор процесса. Если вы знаете имя процесса, вы можете получить pid, используяpgrep name
. - person Tom Fenech   schedule 12.01.2015pkill -f unicorn
. - person Chris Heald   schedule 12.01.2015pidof <command name>
. Помимо форматирования, команда эквивалентнаpgrep
. Я советую вам написать простой сценарий оболочки для запуска сервера, когда это произойдет, вы сможете сохранить pid серверного процесса и завершить его позже. Это позволит избежать закрытия других процессов, которые могут быть нежелательным побочным эффектом при использованииkill $(pgrep command)
,kill command
илиkill $(pidof command)
. - person ShellFish   schedule 12.01.2015CTRL-Z
, и после этого оболочка ответит вам сообщением, похожим, например, на[3] Stopped
, вы можете выполнитьkill %3
(3 — номер задания внутри[x]
), в конечном итоге выдав нужный вам сигнал, если он отличается от SIGTERM (Получить полный список сkill -l
). - person Hastur   schedule 12.01.2015