Не удается остановить сервер 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

Следуй этим шагам:

  1. открой свой проект
  2. выберите в папке tmp
  3. выберите папку pids
  4. удалить файл server.pid
  5. Теперь запустите ваш сервер рельсов

Ответ 24

  1. Просто откройте файл, используя указанное местоположениеsudo vi /Users/user1/go/src/github.com/rails_app/rails_project/tmp/pids/server.pid

  2. найдите process_id/thread_id, в котором запущен процесс.

  3. Убить указанный процесс/поток, используя kill -9 84699