143

私はレールが初めてで、ubuntu マシンと ruby​​mine IDE を使用しています。問題は、Rails サーバーを停止できないことです。Railsプロセスを強制終了してサーバーを停止しようとしました。しかし、実行するpgrep -l railsと、そのようなプロセスは見つかりません。つまり、Ruby プロセスを強制終了することしかできませんが、サーバーは停止しません。

試してみ./script/server stopました(実行して開始したため./script/server start)が、うまくいきませんでした。グーグルでいくつかのスタックオーバーフローの投稿を見つけて、ローカルホストポートのリッスンポートを変更しようとしましたが、成功しませんでした。誰か助けてくれませんか?

4

27 に答える 27

338

次のような他のポートを使用できます。

rails server -p 3001

通常、端末Ctrl + Cでサーバーのシャットダウンを試みることができます。

Ruby on Rails のデフォルト サーバー (つまりWEBrick) を強制終了するもう 1 つの方法は次のとおりです。

kill -INT $(cat tmp/pids/server.pid)

端末でプロセスの PID を確認するには:

$ lsof -wni tcp:3000

次に、PID 列の数値を使用してプロセスを強制終了します。

例えば:

$ kill -9 PID

そして、私が見つけた他の答えのいくつかは次のとおりです。

実行中に Rails サーバーを停止するには、次のように入力します。

CTRL-C
CTRL-Z

コントロールを に戻しbashます。次に、次のように入力します ( は省略します$):

$ fg

そして、これはプロセスに戻り、Rails s適切に終了します。

少し面倒ですが、これはプロセスを手動で強制終了するよりも確実です。それは悪くないし、私が理解できる最高のものだ。

更新された回答:

killall -9 rails名前に「 」が含まれる実行中のすべてのアプリを強制終了するために使用できますrails

killall -9 rails

于 2013-02-26T11:42:53.507 に答える
54

次の方法でgrepコマンドを使用できます。

ps aux | grep rails

その後

kill -9 {process_id} 
于 2013-02-26T11:48:27.240 に答える
22

サーバープロセスを強制終了する手順は次のとおりです。

1. lsof -i tcp:3000

2. kill -9 1234

ここ1234で、プロセスの PID: localhost:3000 がステップ 1 で表示されます。

また

以下のファイル (server.pid) を削除しRails.root/tmp/pids/、サーバーを再起動します。

また

次のコマンドを使用して、別のポートでアプリを開きます。

rails s -p 3001

于 2017-01-11T06:48:03.850 に答える
21

私のMACではkillall -9 rails動作しません。しかし、killall -9 rubyそうです。

于 2014-09-30T17:33:06.907 に答える
7

1. Rails app ディレクトリから pid ファイルを削除するだけです。

Rails_app -> tmp -> pids -> pid file

ファイルを削除して実行

rails start


2. Rails 5.0 以降では、このコマンドを使用できます

rails restart

于 2017-05-31T16:35:02.550 に答える
3

tmp/pids フォルダーから server.pid を削除します。私の場合、エラーは次のとおりでした: サーバーは既に実行されています。/home/sbhatta/myapp/tmp/pids/server.pid を確認してください。

だから、私はserver.pidを削除します

rm /home/sbhatta/myapp/tmp/pids/server.pid 次に実行しますrails s

于 2014-09-26T09:11:03.467 に答える
3

通常は Ctrl-Z でうまくいくはずです。

于 2015-07-24T06:28:13.207 に答える
3

ctrl+cWebrick サーバーをシャットダウンするために使用します。

残念ながら、それが機能しない場合は、ターミナルを強制的に閉じて再起動してください。

もう一つのトリックは、

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
于 2013-02-26T11:44:12.293 に答える
2

私はkillall -9 railsSriが提案したように使用しましたが、うまくいきませんでした. コマンドを調整するkillall -9 rubyと、サーバーはすぐに閉じました。

概要:killall -9 ruby

于 2015-10-15T22:24:51.870 に答える
1

/tmp/tmp/server.pidを確認してください

中にpidがあります。

通常、私はcmdで「kill-9THE_PID」を実行しません

于 2013-02-26T11:46:59.817 に答える
0

1つの非常に簡単な方法は

gem install shutup

次に、Rails プロジェクトの現在のフォルダーに移動して実行します

shutup# これにより、現在実行中の Rails プロセスが強制終了されます

必要なときにいつでも「shutup」コマンドを使用できます

免責事項: 私はこの宝石の作成者です

注: rvm を使用している場合は、gem をグローバルにインストールしてください

rvm @global do gem install shutup
于 2016-11-16T11:59:00.050 に答える
0

この質問は遅くなりました。これが私の2セントです。サーバーにアクセスできないときにサーバーを停止するための rake タスクを作成しました。ただし、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`
于 2015-06-03T04:57:05.517 に答える
0

また、サーバーの起動に使用するのと同じ端末 (タブ) でコマンド Cntrl+C を実行していることを確認してください。

私の場合、2 つのタブがありましたが、正しいタブからサーバーを停止するのを忘れていました。なぜ Cntrl+C が機能しないのか疑問に思っていました。

于 2016-08-25T10:30:21.713 に答える