Сервер Rails говорит, что порт уже используется, как убить этот процесс?
Я нахожусь на mac, делая:
сервер rails
Я получаю:
2010-12-17 12:35:15] INFO WEBrick 1.3.1
[2010-12-17 12:35:15] INFO ruby 1.8.7 (2010-08-16) [i686-darwin10.4.0]
[2010-12-17 12:35:15] WARN TCPServer Error: Address already in use - bind(2)
Exiting
Я знаю, что могу запустить его на новом порту, но я хочу убить этот процесс.
Ответы
Ответ 1
Предполагая, что вы хотите убить все, что находится на порту 3000 (что обычно используется webrick), введите это в своем терминале, чтобы узнать PID процесса:
$ lsof -wni tcp:3000
Затем используйте число в столбце PID, чтобы убить процесс:
$ kill -9 PID
Ответ 2
kill -9 $(lsof -i tcp:3000 -t)
Ответ 3
Вам нужно получить идентификатор процесса программы с помощью tcp-порта 3000. Чтобы получить идентификатор процесса
lsof -i tcp:3000 -t
И затем, используя этот идентификатор процесса, просто уничтожьте процесс, используя команду kill ubuntu.
kill -9 pid
Или просто запустите указанную команду комбайна. Сначала он выберет pid, а затем убьет этот процесс.
kill -9 $(lsof -i tcp:3000 -t)
Ответ 4
Для тех, кто сталкивается с этим вопросом, который не находится на Mac: если вы знаете, что ваш сервер работает на порту 3000, вы можете сделать это одним выстрелом, выполнив следующее:
fuser -k 3000/tcp
Но, как сказал Тоби, реализация фьюзера в Mac OS довольно примитивна, и эта команда не будет работать на Mac.
Ответ 5
Иногда возникает вероятность, что сервер рельсов не закрыт должным образом.
Вы можете найти процесс, используемый рельсами
ps aux | grep rails
Выход будет похож на
user 12609 9.8 0.5 66456 45480 pts/0 Sl+ 21:06 0:02 /home/user/.rvm/rubies/ruby-2.2.0-preview1/bin/ruby bin/rails s
Здесь process_id 12609 используется сервером rails.
Вы можете легко убить его командой
kill -9 12609
Ответ 6
Все приведенные выше ответы действительно хороши, но мне нужен был способ ввода как можно меньше в терминале, поэтому я создал для этого камень. Вы можете установить драгоценный камень только один раз и запустить команду "shutup" каждый раз, когда вы хотите убить Rails-процесс (находясь в текущей папке).
gem install shutup
затем зайдите в текущую папку вашего проекта rails и запустите
shutup
# это убьет текущий Rails-процесс
Вы можете использовать команду 'shutup' каждый раз, когда хотите
DICLAIMER: Я создатель этого драгоценного камня
ПРИМЕЧАНИЕ: если вы используете rvm, установите gem глобально
rvm @global do gem install shutup
Ответ 7
ps aux | grep rails используют эту команду, вы можете убить сервер
Ответ 8
Одноканальное решение:
kill -9 $(ps aux | grep 'rails s' | awk {'print$2'}); rails s
Ответ 9
По умолчанию сервер rails использует порт 3000.
Итак, у вас есть 2 варианта запуска сервера rails.
1. Либо вы можете запустить сервер на другом порту, определив пользовательский порт с помощью следующей команды
rails s -p 3001
2. Или вы можете уничтожить все запущенные процессы ruby, выполнив следующую команду
killall -9 ruby
затем запустить rails server
Ответ 10
Введите
man lsof
Затем найдите -w, -n и -i
-i: интернет-материал
-n: делает это быстрее
-w: переключает предупреждения
Есть более подробные сведения о страницах руководства
Ответ 11
Если вы находитесь на машине с Windows, выполните следующие действия.
c:/project/
cd tmp
c:/project/tmp
cd pids
c:/project/tmp/pids
dir
Там будет файл с именем server.pid
удалите его.
c:/project/tmp/pid> del *.pid
Вот оно.
EDIT: Пожалуйста, обратитесь к этому вопросу