..$ rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid.
Exiting
как проще всего решить эту проблему для новичка в рельсах?
temp
папки может решить вашу проблему.Ответы:
Вы можете удалить
server.pid
файл.rm /your_project_path/tmp/pids/server.pid
Остальное:
попробуйте в OSX:
sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000
или в Linux:
ps -aef | grep rails
или же
lsof -wni tcp:3000
убить процесс, используя
kill -9 PID (eg,2786)
источник
Короткая и четкая однострочная команда, которая позаботится об этом.
kill -9 $(lsof -i tcp:3000 -t)
источник
ruby
, запустивtop
получение PID, а затем запустивkill -9 <PID>
server.pid
содержит только идентификатор процесса работающего сервера.Если вы это сделаете:
more /your_project_path/tmp/pids/server.pid
вы получите номер (например, 6745), который можно использовать для остановки предыдущего сервера с помощью команды kill:
kill -9 6745
а затем вы можете удалить файл с помощью
rm
командыrm /your_project_path/tmp/pids/server.pid
источник
server.pid
в кавычки заставит оболочку попытаться выполнить server.pid, не так ли?Если вы используете docker-compose и docker-compose.yml:
volumes: - .:/myapp
Это означает, что ваша локальная рабочая область сопоставлена с папкой контейнера / myapp.Все, что находится в / myapp, не будет удалено для определенных томов.
Вы можете удалить
./tmp/pids/server.pid
на своем локальном компьютере. Тогда у контейнера / myapp не будет этого файла.источник
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
.Просто:
зайдите в корневую папку проекта, когда это произойдет, и запустите:
gem install shutup shutup
Это обнаружит запущенный в данный момент процесс, убьет его и очистит файл pid.
ПРИМЕЧАНИЕ: если вы используете rvm, установите гем глобально
rvm @global do gem install shutup
источник
Решить проблему можно с помощью:
kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)
источник
Иногда это происходит из-за того, что вы выключаете сервер принудительно, например, выключаете ОС / машину вручную, чтобы у сервера не было достаточно времени для входа в server.pid.
Один из простых способов - вручную перейти в
tmp/pids/
(каталог, отображаемый на консоли) и удалитьserver.pid
файл. Затем, когда вы снова запускаете сервер,rails server
илиrails s
он создает новый server.pid, и вы можете продолжить разработку.источник
графический интерфейс для пользователя Windows
откройте ResourceMonitor (диспетчер задач -> Производительность -> ResourceMonitor) и завершите процесс ruby.exe
источник
Откройте
path/to/your/rails/project/tmp/pids/server.pid
файл.Скопируйте найденный там номер.
Бежать
kill -9 [PID]
Где
[PID]
номер, который вы скопировали изserver.pid
файла.Это убьет запущенный серверный процесс, и вы сможете снова запустить сервер без каких-либо проблем.
источник
Убейте server.pid с помощью команды:
kill -9 `cat /root/myapp/tmp/pids/server.pid`
Примечание. Используйте свой путь server.pid, который отображается в консоли / терминале.
Спасибо.
источник
Для получения дополнительной информации в контексте запуска приложения в докере.
В файле docker-compose.yml, в самом контейнере приложения, вы можете использовать одно из следующих действий:
command: ["rm /your-app-path/tmp/pids/server.pid && bundle exec bin/rails s -p 3000 -b '0.0.0.0'"]
или же
command: ["rm /your-app-path/tmp/pids/server.pid; foreman start"]
Обратите внимание на использование либо,
;
либо&&
, которое&&
отправит сигнал выхода, еслиrm
не удастся найти файл, заставляя ваш контейнер преждевременно останавливаться. Использование;
продолжит выполнение.Почему это в первую очередь вызвано? Обоснование состоит в том, что если сервер (puma / thin / любой другой) не завершает работу, он оставит pid на хост-машине, что приведет к ошибке выхода.
Для переносимости, а не для ручного удаления файла в хост-системе, лучше проверить, существует ли файл в рамках сценария, или составить сам файл.
источник
First Find PID # - где застрял сервер Rails
Запустите это, чтобы найти застрявший PID
cat ./tmp/pids/server.pid
Он вернет что-то вроде
65829
Затем УБИЙТЕ этот PID =>
kill 65829
источник
Запустите эту команду -
тогда вы получите следующую таблицу -
Запустите эту команду и замените PID из приведенной выше таблицы
пример:
источник
Для этой проблемы
Что я сделал:
app/tmp/
а затем закройте терминал, на котором запущено текущее приложение, и закройте вкладку (в окне браузера)
после этого снова откройте терминал, войдя в папку, а затем сделайте,
rails s
источник
сначала скопируйте камер внутри файла, затем удалите его: rm /your_project_path/tmp/pids/server.pid, затем создайте его снова. touch /YOUR_PROJECT_PATH/tmp/pids/server.pid У меня это сработало.
источник
Запустите приведенную ниже команду на терминале (только для Linux)
ps aux | grep rails
а потом
kill -9 [pid]
По-другому
lsof -wni tcp:3000
а потом
kill -9 [PID]
источник
РЕШЕНИЕ
Адрес уже используется - ошибка bind (2) ”500 в Ruby on Rails
Недавно я попытался запустить приложение Rails на производственном сервере. Это не только не сработало, но и сломало мой сервер разработки localhost: 3000. Localhost загрузит только пустую белую страницу или ошибку 500.
Чтобы решить эту проблему, я использовал две быстрые команды. Если они не вернут результат, возможно, вам придется поискать решение в другом месте, но это хорошее быстрое решение.
lsof -wni tcp: 3000
Эта команда показывает все мои текущие запущенные процессы и их PID (идентификаторы процессов) на порту 3000. Поскольку существуют существующие запущенные процессы, которые не закрылись правильно, мой новый сервер: 3000 не может запуститься, отсюда и ошибка 500.
убить 52179
убить 52180
рельсы s
Я использовал команду Linux kill, чтобы вручную остановить вредоносные процессы. Если у вас их больше 4, просто используйте kill для любых PID, пока первая команда не станет пустой. Затем попробуйте снова перезапустить сервер localhost: 3000. Это не повредит вашему компьютеру! Он просто убивает существующие процессы Ruby на вашем порту localhost. Новый сервер снова запустит эти процессы. Удачи!
источник
РЕШЕНИЕ для Windows:
источник
Для ubuntu 20,
kill -9 $(ps -aef | grep rails)
источник