サーバーはすでにRailsで実行されています


137

rails sコマンドを使用してRailsサーバーを起動すると、表示されますA server is already running. Check C:/Sites/folder/Pids/Server.pids

ファイルを開くと、4桁の数値しか出力されないので、この問題を解決するにはどうすればよいですか?

ご参考までに

  1. 今回は、Rails cmdの他のインスタンスは実行されていません。
  2. タスクマネージャーを確認しましたがcmd.exe、他に実行中のプロセスがないことを示しています。(Windowsを使用)。

1
\ tmp \ pidsからserver.pidを削除します
user6746262

回答:


195

ファイルを削除します:C:/Sites/folder/Pids/Server.pids

説明 UNIXランドでは、通常、server.pidなどのファイルでプロセスID(pid)を追跡します。これはここでも同じことをしていると思います。そのファイルはおそらくクラッシュで残ったものです。


5
正確にこのファイルが何をして、これを引き起こすのか..もう少し説明してください:)
swapnesh

11
申し訳ありませんが、私はさらにコメントする必要がありました。UNIXランドでは、通常、server.pidのようなファイルでプロセスID(pid)を追跡します。これはここでも同じことをしていると思います。そのファイルはおそらくクラッシュで残ったものです。
rainkinz 2013

私はGitからそれをクローンしたと思うので、それは原因かもしれないと思いますか?github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
これを行った後も、3000の「使用中のポート」がまだあります。これを修正する方法を誰かが知っていますか?ありがとう!
daveomcd 2014年

5
netstat -a -oコマンドプロンプトで実行して、ポート3000を使用しているプロセスを確認します
Rory

172

TL; DRこのコマンドを実行して強制終了する

sudo kill -9 $(lsof -i :3000 -t)

根本的な原因: PIDがファイルでロックされているため、Webサーバーは、そのファイルが存在する場合はすでに実行中であると見なします。ウェブサーバーは、ファイルが削除されたことを閉じていますが、手動でファイルを削除する必要がありますので、いくつかのケースでは、適切な削除は発生しません。通常 の新ソリューション

あなたがレールを走るとき

=> 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 -d」を使用してRailsサーバーを切り離した場合、

コマンドを使用して、レールから切り離されたサーバーを削除する

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

また、複数のサーバーを実行している3.2.11へのRailsの更新が失敗するその他のオプションについては、この投稿を参照してください。


PIDはファイル内でロックされており、Webサーバーは、そのファイルが存在する場合はすでに実行中であると見なしているためです。通常、Webサーバーが閉じられると、そのファイルは削除されますが、場合によっては適切に削除されないため、手動でファイルを削除する必要があります
Taimoor Changaiz

ブラウザが:3000を指している場合、これもブラウザを強制終了します。
Aeramor

1
完璧なソリューションsudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

次に、ルビープロセスが表示され、実行できます

kill -9 processid

あなたは今プロセスを実行するのが良いはずです

rails s thin

複数のプロセスを実行することは良い考えのようには思えず、私が読んだことから多くの人が同意します。残念ながら、レールでの多くのメモリリークに気付いたので、2つのプロセスが実行されているとは想像できませんでした。メモリにデータが格納されているため、時間の経過とともに、ページの更新がますます遅くなります。


27
kill -9 $(lsof -i tcp:3000 -t)

2
@CalamityAdam Railsは通常、ポート3000で実行されます。彼はそれに基づいてプロセスを検索し、それらからPIDのみを取得し(-tオプション)、取得したPIDによってプロセスを強制終了します。
totymedli

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

職長開始等サービス開始


4

サーバープロセスを強制終了し、pidファイルが更新されなかった場合に発生します。最善の解決策は、Server.pidファイルを削除することです。

コマンドを使用する

rm <path to file Server.pid>


4

gem install shutup

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

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

いつでもコマンド「shutup」を使用できます

DICLAIMER:私はこの宝石の作成者です

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

rvm @global do gem install shutup

3

おそらく、次の方法でサーバーを一時停止しました^Z

vim C:/Sites/folder/Pids/Server.pids出力される4つのデジタル番号はプロセスIDです。

kill -9 processidプロセスIDをvim(または他のエディター)が出力した4つの数値に置き換えてください。


サーバーを適切に停止する正しい方法は何ですか?CTRL + C?
stt106 2019

1

Windowsを使用している場合は、「rails restart」として1つのステップだけを実行してから、 「rails s」 と再度入力 するだけです。


1

Windows Rails 5.2では、このファイルを削除します

c:/Sites/<your_folder>/tmp/pids/server.pid

そして走る

rails s

再び。


1

実行: fuser -k -n tcp 3000

これにより、デフォルトのポート3000で実行されているプロセスが強制終了されます。


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.