Сервер Rails говорит, что порт уже используется, как убить этот процесс? - PullRequest
247 голосов
/ 17 декабря 2010

Я на маке, занимаюсь:

сервер рельсов

Я получаю:

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

Я знаю, что могу запустить один на новом порту, но я хочу убить этот процесс.

Ответы [ 11 ]

629 голосов
/ 17 декабря 2010

Предполагая, что вы хотите уничтожить все, что находится на порту 3000 (это то, что обычно использует webrick), введите его в своем терминале, чтобы узнать PID процесса:

$ lsof -wni tcp:3000

Затем используйте число в столбце PID, чтобы завершить процесс:

$ kill -9 PID
105 голосов
/ 05 марта 2013

kill -9 $(lsof -i tcp:3000 -t)

28 голосов
/ 17 августа 2015

Вам необходимо получить идентификатор процесса программы, используя TCP-порт 3000. Чтобы получить идентификатор процесса

lsof -i tcp:3000 -t

А затем, используя этот идентификатор процесса, просто убейте процесс, используя команду ubuntu kill.

kill -9 pid

Или просто запустите указанную ниже команду комбайна. Сначала он извлечет pid, а затем убивает этот процесс.

kill -9 $(lsof -i tcp:3000 -t)
16 голосов
/ 13 февраля 2013

Для любого, кто сталкивается с этим вопросом, которого нет на Mac: если вы знаете, что ваш сервер работает на порте 3000, вы можете сделать это за один раз, выполнив следующее:

fuser -k 3000/tcp

Но, как уже упоминал Тоби, реализация fuser в Mac OS довольно примитивна, и эта команда не будет работать на mac.

13 голосов
/ 16 марта 2015

Иногда бывает, что сервер рельсов не закрывается должным образом. Вы можете найти процесс, используемый рельсами

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.

Вы можете легко убить его командой

убить -9 12609

11 голосов
/ 16 ноября 2016

Все ответы выше действительно хороши, но мне нужен был способ набрать как можно меньше в терминале, поэтому я создал для этого драгоценный камень.Вы можете установить гем только один раз и запускать команду «shutup» каждый раз, когда хотите уничтожить процесс Rails (находясь в текущей папке).

gem install shutup

, затем перейдите в текущую папку вашего проекта rails и запустите

shutup # это убьет процесс Rails, который в данный момент выполняется

Вы можете использовать команду «shutup» каждый раз, когда захотите

DICLAIMER: я создатель этого драгоценного камня

ПРИМЕЧАНИЕ: если вы используете rvm, установите драгоценный камень глобально

rvm @global do gem install shutup
2 голосов
/ 10 ноября 2017

ps aux | grep rails используйте эту команду, чтобы убить сервер

0 голосов
/ 14 июня 2019

По умолчанию сервер rails использует порт 3000.
Итак, у вас есть 2 варианта запуска сервера rails.
1. Либо вы можете запустить сервер на другом порту, определив пользовательский порт с помощью следующей команды
rails s -p 3001
2. Или вы можете уничтожить все запущенные процессы ruby, выполнив следующую команду
killall -9 ruby
затем запустите rails server

0 голосов
/ 08 мая 2019

Однолинейное решение:

kill -9 $(ps aux | grep 'rails s' | awk {'print$2'}); rails s
0 голосов
/ 29 августа 2014

Если вы работаете на машине Windows, выполните следующие действия.

c:/project/
cd tmp
c:/project/tmp
cd pids
c:/project/tmp/pids
dir

Там вы найдете файл с именем server.pid

.это.

РЕДАКТИРОВАТЬ: Пожалуйста, укажите это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...