Сервер уже запущен в Rails


137

Когда я запускаю сервер rails с помощью rails sкоманды, он показываетA server is already running. Check C:/Sites/folder/Pids/Server.pids

Когда я открываю файл, он выводит только 4-значное число, так как я могу решить эту проблему?

FYI

  1. Никакой другой экземпляр Rails cmd на этот раз не работает.
  2. Проверен диспетчер задач, но только cmd.exeпоказывает, что больше не запущен процесс. (используя Windows).

1
Я удаляю server.pid из \ tmp \ pids
user6746262

Ответы:


195

Удалите файл: C: /Sites/folder/Pids/Server.pids

Пояснение В земле UNIX, по крайней мере, мы обычно отслеживаем идентификатор процесса (pid) в файле, подобном server.pid. Я думаю, что здесь происходит то же самое. Этот файл, вероятно, был оставлен после аварии.


5
что именно этот файл делает и вызывает для этого .. можете ли вы объяснить это немного больше :)
swapnesh

11
Извините, я должен был прокомментировать дальше. В земле UNIX, по крайней мере, мы обычно отслеживаем идентификатор процесса (pid) в файле, подобном server.pid. Я думаю, что здесь происходит то же самое. Этот файл, вероятно, был оставлен после аварии.
rainkinz

Я думаю, что я клонирую это из Git, так ты думаешь, что это может быть причиной? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
После этого я все еще получаю «Порт в использовании» на 3000. Кто-нибудь знает, как я могу это исправить? Спасибо!
daveomcd

5
Запустите netstat -a -oв командной строке, чтобы увидеть, какой процесс использует порт 3000
Рори

172

TL; DR Просто запустите эту команду, чтобы убить его

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

Основная причина: поскольку PID заблокирован в файле, а веб-сервер считает, что если этот файл существует, значит, он уже запущен. Обычно, когда веб-сервер закрыт, этот файл удаляется, но в некоторых случаях надлежащего удаления не происходит, поэтому вам придется удалить файл вручную. Новые решения

когда вы запускаете рельсы с

=> Загрузка WEBrick

=> Приложение Rails 4.0.4 запускается в разработке на http://0.0.0.0:3000

=> Запустить rails server -hдля дополнительных параметров запуска

=> Ctrl-C для выключения сервера

Сервер уже запущен. Проверьте /your_project_path/tmp/pids/server.pid. Выход

Поэтому разместите ваш путь, показанный здесь /your_project_path/tmp/pids/server.pid

и удалите этот файл server.pid :

rm /your_project_path/tmp/pids/server.pid

ИЛИ Если ваш сервер отключен, следуйте приведенным ниже инструкциям:

Если вы отключили сервер rails с помощью команды "rails -d",

Удалить рельсы с сервера с помощью команды

ps -aef | grep rails

ИЛИ этой командой

sudo lsof -wni tcp:3000

затем

kill -9 pID

ИЛИ используйте эту команду

Чтобы найти и уничтожить процесс по имени порта, на котором запущена эта программа. Для 3000 замените порт, на котором работает ваша программа.

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

Старое решение:

rails s -p 4000 -P tmp/pids/server2.pid

Также вы можете найти этот пост для получения дополнительных опций Обновление Rails до 3.2.11 прерывает работу нескольких серверов


поскольку PID заблокирован в файле, а веб-сервер считает, что если этот файл существует, это означает, что он уже запущен. Обычно, когда веб-сервер закрыт, этот файл удаляется, но в некоторых случаях надлежащего удаления не происходит, поэтому вы должны удалить файл вручную
Taimoor Changaiz

Осторожно, это также убьет ваш браузер, если он указывает на: 3000!
Aeramor

1
идеальное решение дляsudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

Тогда вы должны увидеть процесс ruby, и вы можете запустить

kill -9 processid

ты должен быть хорош, чтобы запустить процесс сейчас

rails s thin

запуск нескольких процессов не кажется хорошей идеей, и из того, что я прочитал, многие согласны. К сожалению, я заметил много утечек памяти с помощью рельсов, поэтому я не мог представить, что запущены два процесса. Я знаю, что с одним сверхурочным временем обновления моей страницы становятся все медленнее из-за данных, хранящихся в памяти.


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

2
@CalamityAdam Rails обычно работает на порте 3000. Он ищет процессы на основе этого и получает от них только PID ( -tопция), а затем убивает процесс по этому извлеченному PID.
Тотемедли

13

Вы можете избавиться от процесса, убив его:

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

Мне нравится этот. Хороший и лаконичный, но полный. Приветствия.
LunaCodeGirl

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

начальник бригады и т.д.


4

Это происходит, когда вы убиваете свой серверный процесс и файл pid не обновлялся. Лучшее решение - удалить файл Server.pid .

Используйте команду

rm <path to file Server.pid>


4

gem install shutup

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

shutup # это убьет запущенный в данный момент Rails-процесс

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

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

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

rvm @global do gem install shutup

3

Возможно, вы приостановили работу сервера: ^Z .

Четыре цифровых числа, которые vim C:/Sites/folder/Pids/Server.pidsвыводятся, являются идентификатором процесса.

Вам следует kill -9 processidзаменить идентификатор процесса четырьмя числами, которые выдал vim (или другой редактор).


Как правильно остановить сервер? CTRL + C?
19

1

Если вы работаете в Windows, вам просто нужно сделать только один шаг, пока «rails restart», а затем снова набрать «rails s» .


1

В Windows Rails 5.2 удалите этот файл

c:/Sites/<your_folder>/tmp/pids/server.pid

и беги

rails s

очередной раз.


1

Бегать: fuser -k -n tcp 3000

Это убьет процесс, запущенный на порте по умолчанию 3000.


0

У меня просто была эта проблема, и я попытался установить ее на другой порт, но единственное, что мне нужно было сделать, это удалить мой, [app_directory]/tmp/pids/server.pidи все было хорошо.


0

Бегать:

в Ubuntu / Linux

 sudo rm /var/www/html/rails/WBPOCTEST/tmp/pids/server.pid

Или

 pkill -9 ruby

или

lsof -wni tcp:3000

kill -9 pid
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.