Не удается остановить сервер rails
Я новичок в рельсах, и я использую машину ubuntu и IDE rubimine. Проблема в том, что я не могу остановить сервер rails. Я попытался остановить сервер, убив процесс рельсов. Но, когда я запускаю pgrep -l rails
, такой процесс не найден. Таким образом, я могу только убить рубиновые процессы, но сервер не остановится.
Я попробовал ./script/server stop
(так как я начал его, запустив ./script/server start
), но это не сработало. Открывая поиск и обнаружив несколько записей stackoverflow, я попытался изменить порт прослушивания порта localhost, но безуспешно. Кто-нибудь может помочь?
Ответы
Ответ 1
Вы можете использовать другие порты, например:
rails server -p 3001
Обычно в терминале вы можете попробовать Ctrl + C
завершить работу сервера.
Другой способ убить сервер по умолчанию Ruby on Rails (WEBrick
):
kill -INT $(cat tmp/pids/server.pid)
В вашем терминале узнать PID процесса:
$ lsof -wni tcp:3000
Затем используйте число в столбце PID, чтобы убить процесс:
Например:
$ kill -9 PID
И некоторые другие ответы, которые я нашел, это:
Чтобы остановить сервер рельсов во время его работы, нажмите:
CTRL-C
CTRL-Z
Вы вернете управление на bash
. Затем введите (без $
):
$ fg
И это вернется к процессу, а затем выйдет из Rails s
правильно.
Это немного раздражает, но это наверняка будет убивать процесс вручную. Это не так уж плохо, и это лучшее, что я мог бы выяснить.
Обновленный ответ:
Вы можете использовать killall -9 rails
, чтобы убить все запущенные приложения с помощью "rails
" в имени.
killall -9 rails
Ответ 2
вы можете использовать команду grep следующим образом:
ps aux | grep rails
а затем
kill -9 {process_id}
Ответ 3
pkill -9 rails
, чтобы убить весь процесс рельсов
Обновленный ответ
ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9
Это приведет к урону любого выполняемого рельса. Замените "рельсы" чем-нибудь другим, чтобы убить другие процессы.
Ответ 4
На моем MAC killall -9 rails
не работает. Но killall -9 ruby
делает.
Ответ 5
Ниже приведены шаги по уничтожению серверного процесса:
1. lsof -i tcp:3000
2. kill -9 1234
где 1234
- это идентификатор процесса: localhost: 3000 отображается на шаге 1.
ИЛИ
Удалите файл (server.pid) в Rails.root/tmp/pids/
и перезапустите сервер.
ИЛИ
откройте приложение в другом порту с помощью команды:
rails s -p 3001
Ответ 6
Обычно я использую:
killall ruby
ИЛИ
pkill -9 ruby
который уничтожит все связанные с Ruby процессы, которые работают как rails server
, rails console
и т.д.
Ответ 7
1. Просто удалите файл pid из каталога приложений rails
Rails_app -> tmp -> pids -> pid file
Удалите файл и запустите
rails start
2. Для Rails 5.0 и выше вы можете использовать эту команду
rails restart
Ответ 8
Используйте ctrl+c
для выключения сервера Webrick.
К сожалению, если он не работает, то принудительно закройте терминал и перезапустите его.
Другим трюком является то, что
1. open your system-monitor(a gui application) on ubuntu
2. Select processes tab
3. Then look for a process having name 'ruby'
4. End that process
Ответ 9
Удалите server.pid из папки tmp/pids.
В моем случае ошибка была: сервер уже запущен. Проверьте /home/sbhatta/myapp/tmp/pids/server.pid.
Итак, я удаляю server.pid
rm /home/sbhatta/myapp/tmp/pids/server.pid
затем запустите rails s
Ответ 10
Ctrl-Z обычно должен делать трюк.
Ответ 11
Я использовал killall -9 rails
, как предложил Шри, и это не сработало. Я скорректировал команду на killall -9 ruby
, и сервер немедленно закрылся.
Tl; dr: killall -9 ruby
Ответ 12
Шаг 1: найдите, какие элементы потребляют 3000 портов.
lsof -i:3000
Шаг 2: Найдите процесс с именем
Для Mac
ruby TCP localhost:hbci (LISTEN)
Для Ubuntu
ruby TCP *:3000 (LISTEN)
Шаг 3: Найдите PID процесса и убейте его.
kill -9 PID
Ответ 13
это так просто, как
pkill -9 ruby
ни больше ни меньше
Ответ 14
проверьте/tmp/tmp/server.pid
внутри находится pid.
Обычно я боюсь "убить -9 THE_PID" в cmd
Ответ 15
Когда сервер rails не запускается, это означает, что он уже запущен, тогда вы можете начать с использования нового порта, например.
rails s -p 3001
или он запускается и останавливается в этом случае, вы хотите удалить временную папку в структуре каталогов rails, он запускает сервер rails.
Ответ 16
Я заметил в Windows (Im использует 10, но не уверен, что то же самое для oler). Если вы используете cmd.exe и ctrl + c, сервер raisl останавливается правильно.
Однако, если вы используете Git Bash, это не так. Он говорит, что есть, но когда вы смотрите на tmp pids, он все еще там.
Может быть ошибка с Git bash?
Ответ 17
Поздно для этого вопроса.
Вот мои 2 цента. Я сделал задачу рейка для остановки сервера, когда у меня нет доступа к нему.
Я тестировал только на Mac.
С помощью этого вы можете просто добавить его в свой проект, а затем запустить команду rake.
Здесь вы идете:
Ссылка на Gist: -главная версия будет здесь.
https://gist.github.com/houmanka/289184ca5d8d92de0499#file-server-rake
Некоторый код здесь:
# Make a file under: `project_root/lib/tasks/server.rake`
# Then paste the following code
namespace :server do
desc "Stop the running server by killing the PID"
task :kill do
STDOUT.puts "Enter port number: "
post_number = STDIN.gets.strip
system "pid=$(lsof -i:#{post_number.to_i} -t); kill -TERM $pid || kill -KILL $pid"
end
end
# Then to use it in the terminal: `rake server:kill`
Ответ 18
Кроме того, убедитесь, что вы выполняете команду Cntrl + C на том же терминале (вкладке), который используется для запуска сервера.
В моем случае у меня было 2 вкладки, но я забыл остановить сервер с правильной вкладки, и мне было интересно, почему Cntrl + C не работает.
Ответ 19
Одним супер простым способом будет
gem install shutup
затем зайдите в текущую папку вашего проекта rails и запустите
shutup
# это убьет текущий Rails-процесс
Вы можете использовать команду 'shutup' каждый раз, когда хотите
DICLAIMER: Я создатель этого драгоценного камня
ПРИМЕЧАНИЕ: если вы используете rvm, установите gem глобально
rvm @global do gem install shutup
Ответ 20
Для моей машины с Windows 10 работает Ctrl - C + Ctrl - D.
Ответ 21
killall -9 ruby
убьет все процессы ruby, и по крайней мере на моей машине серверы rails отображаются как процессы ruby. killall -9 rails
гораздо более конкретен и не работает для более старых версий серверов rails (он дает "rails: процесс не найден", потому что процесс называется ruby)
Обнаружил эту проблему некоторое время назад. После отправки формы в activeadmin сервер rails просто завис, и я не смог убить его обычным способом (даже после ctrl + z он все еще работал в фоновом режиме). Ответ учащегося помог, но эта команда не нуждается в идентификаторе процесса.
Ответ 22
Мы можем убить сессию rails в Linux, используя PORT no
fuser -k 3000/tcp
здесь 3000 номер порта Теперь перезагрузите ваш сервер, вы увидите, что ваш сервер в рабочем состоянии.
Ответ 23
Следуй этим шагам:
- открой свой проект
- выберите в папке tmp
- выберите папку pids
- удалить файл server.pid
- Теперь запустите ваш сервер рельсов
Ответ 24
Просто откройте файл, используя указанное местоположениеsudo vi /Users/user1/go/src/github.com/rails_app/rails_project/tmp/pids/server.pid
найдите process_id/thread_id, в котором запущен процесс.
Убить указанный процесс/поток, используя kill -9 84699