Сервер Rails говорит, что порт уже используется, как убить этот процесс?



Я на mac, делаю:



rails server



Я:



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


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

454   9  

9 ответов:

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

$ lsof -wni tcp:3000

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

$ kill -9 PID

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

вам нужно получить идентификатор процесса программы с помощью tcp-порта 3000. Чтобы получить идентификатор процесса

lsof -i tcp:3000 -t

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

kill -9 pid

или просто запустите ниже упомянутой команды combine. Сначала он получит pid, а затем убьет этот процесс.

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

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

fuser -k 3000/tcp

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

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

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

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

gem install shutup

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

shutup # это убьет процесс Rails в настоящее время работает

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

ДИКЛАЙМЕР: я создатель этого драгоценного камня

Примечание: Если вы используете rvm установить драгоценный камень глобально

rvm @global do gem install shutup

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

тип:

man lsof

тогда ищи-w, - n, и-i

- i: интернет вещи - n: делает его быстрее -ж: предупреждения переключает

есть более подробная информация на man-страницах

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

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

там будет файл под названием Server.пид

удалить.

c:/project/tmp/pid> del *.pid

вот и все.

EDIT:пожалуйста, обратитесь к этому

Comments

    Ничего не найдено.