Сервер уже запущен в 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).
swapnesh
источник
1
Я удаляю server.pid из \ tmp \ pids
user6746262

Ответы:

195

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

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

rainkinz
источник
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

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

user1251378
источник
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

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

MSC
источник
1

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

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

almawhoob
источник
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
Сайед Шибли
источник