サーバーはすでに実行されています。…/ tmp / pids / server.pidを確認してください。終了-レール


80
..$ 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

Railsの初心者にとってこれを解決する最も簡単な方法は何ですか?



tempフォルダを削除すると、問題を解決できます。
シャー

回答:


168

server.pidファイルを削除できます。

rm /your_project_path/tmp/pids/server.pid

そうしないと:

OSXで試してみてください:

sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000

またはLinuxの場合:

ps -aef | grepレール

または

lsof -wni tcp:3000

を使用してプロセスを強制終了します

kill -9 PID (eg,2786)

1
ニッチピッキング-しかし、あなたはiOSではなくOSXを意味していると思います。@SCraigこれはコマンドラインで実行されます。
jmknoll 2016

1
サーバーの.pidファイルを削除しましたが、まだ問題がありました。システムを再起動することは理想的ではありませんが、迅速な解決策でした。
マット

チャームのように働いた!
ウィリアムハンプシャー

どうすればこれを防ぐことができますか?それは私に非常に頻繁に起こります、私はserver.pidを手動で削除することに飽きます。
ウマゴン

130

短くて鮮明な単一行コマンド、それはそれを処理します。

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

7
笑、localhost:3000で開いている場合は、最初にブラウザタブを閉じたいと思うかもしれません。そうしないと、ブラウザが
停止

誰かがこれをエイリアスとしてzshに保存しようとしましたが、機能しませんか?
stackjlei 2017年

サーバーがシャットダウンされても、rubyがCPUを使い果たしてしまうことがあります。この場合、PIDを取得してruby実行するtopことで、kill -9 <PID>
強制終了する必要があり

17

server.pid 実行中のサーバーのプロセスIDのみが含まれます。

もしあなたがそうするなら:

more /your_project_path/tmp/pids/server.pid

コマンドkillで前のサーバーを停止するために使用できる番号(たとえば6745)を取得します。

kill -9 6745

その後、rmコマンドでファイルを削除できます

rm /your_project_path/tmp/pids/server.pid

1
server.pidバッククォートで囲むと、シェルはserver.pidを実行しようとしますね。
mwfearnley 2016年

14

docker-composeを使用していて、docker-compose.ymlにある場合: volumes: - .:/myapp ローカルワークスペースがコンテナーの/ myappフォルダーにマップされていることを意味します。

/ myapp内のすべては、ボリューム定義に対して削除されません。

./tmp/pids/server.pidローカルマシンで削除できます。その場合、コンテナの/ myappにはこのファイルがありません。


4
コンテナを起動するたびに、そのファイルを自動的に削除することもできますcommand: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"。参考文献:github.com/docker/compose/issues/1393#issuecomment-99988242
leymannx

12

シンプル:

これが発生した場合は、プロジェクトのルートフォルダーに移動し、次のコマンドを実行します。

gem install shutup
shutup

これにより、現在実行中のプロセスが検出され、強制終了され、pidファイルがクリーンアップされます。

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

rvm @global do gem install shutup

5

問題は次を使用して解決できます:

kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)

5

これは、サーバーの電源を強制的にオフにしたために発生することがあります。たとえば、OS /マシンの電源を手動でオフにして、サーバーにserver.pidにログインするための十分な時間がないようにします。

簡単な方法の1つは、手動でtmp/pids/(コンソールに表示されているディレクトリ)に移動してserver.pidファイルを削除することです。その後、サーバーを再起動すると、rails serverまたはrails s、新しいserver.pidが作成され、開発を続行できます。



3

path/to/your/rails/project/tmp/pids/server.pidファイルを開きます。

そこにある番号をコピーします。

実行 kill -9 [PID]

ファイル[PID]からコピーした番号はどこにありserver.pidますか。

これにより、実行中のサーバープロセスが強制終了され、問題なくサーバーを再起動できます。


3

次のコマンドを使用してserver.pidを強制終了します。

kill -9 `cat /root/myapp/tmp/pids/server.pid`

注:コンソール/ターミナルに表示されるserver.pidパスを使用してください。

ありがとうございました。


3

追加情報については、dockerでアプリケーションを実行するというコンテキストで。

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 / whatever)が正常に終了しない場合、ホストマシンにpidが残り、終了エラーが発生することです。

ホストシステム上のファイルを手動で削除するのではなく、移植性を高めるために、ファイルがスクリプトファイルまたは作成ファイル自体の中に存在するかどうかを確認することをお勧めします。


3

最初にPID番号を見つける-Railsサーバーがスタックした場所

これを実行して、スタックしたPIDを見つけます

cat ./tmp/pids/server.pid

それは次のようなものを返します 65829

そして、KILL PID =>ということkill 65829


2

このコマンドを実行します-

lsof -wni tcp:3000

次に、次の表が表示されます-

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    2552 shyam   17u  IPv4  44599      0t0  TCP 127.0.0.1:3000 (LISTEN)
ruby    2552 shyam   18u  IPv6  44600      0t0  TCP [::1]:3000 (LISTEN)

このコマンドを実行し、上記の表のPIDを置き換えます

kill -9 PID

例:

kill -9 2552


0

この問題については、

私がしたことは:

  • 下にあるPidsフォルダを削除します app/tmp/
  • 次に、現在のアプリを実行しているターミナルを閉じて、タブ(ブラウザウィンドウ内)を閉じます。

  • その後、フォルダ内に移動してターミナルを再度開き、次の手順を実行します。 rails s

  • 次に、アプリケーションを実行している新しいタブを開きます

0

最初にファイル内のカンバーをコピーしてから削除します:rm / your_project_path / tmp / pids / server.pid次にそれを再度作成します。タッチ/YOUR_PROJECT_PATH/tmp/pids/server.pid それは私のために働いた。


0

ターミナルで以下のコマンドを実行します(Linuxの場合のみ)

ps aux | grep rails

その後

kill -9 [pid]

別の方法

lsof -wni tcp:3000

その後

kill -9 [PID]

0

解決

すでに使用されているアドレス— bind(2)” Ruby onRailsでの500エラー

最近、本番サーバーでRailsアプリを実行してみました。それが機能しなかっただけでなく、私のlocalhost:3000開発サーバーも壊しました。Localhostは、空白の白いページまたは500エラーのみをロードします。

これを解決するために、2つのクイックコマンドを使用しました。これらが結果を返さない場合は、他の場所で解決策を探す必要があるかもしれませんが、これはすぐに解決できる優れた方法です。

lsof -wni tcp:3000

ruby 52179 rachelchervin 50u IPv6 0x ... 7aa3 0t0 TCP [:: 1]:hbci(聞く)
ruby 52179 rachelchervin 51u IPv4 0x ... c7bb 0t0 TCP 127.0.0.1:hbci(聞く)
ruby 52180 rachelchervin 50u IPv6 0x ... 7aa3 0t0 TCP [:: 1]:hbci(聞く)
ruby 52180 rachelchervin 51u IPv4 0x ... c7bb 0t0 TCP 127.0.0.1:hbci(聞く)

このコマンドは、3000ポートで現在実行中のすべてのプロセスとそのPID(プロセスID)を表示します。正しく閉じられなかった既存の実行中のプロセスがあるため、新しい:3000サーバーを起動できず、500エラーが発生します。

52179を殺す

52180を殺す

レールs

Linuxのkillコマンドを使用して、問題のあるプロセスを手動で停止しました。4つ以上ある場合は、最初のコマンドが空白に戻るまで、任意のPIDでkillを使用します。次に、localhost:3000サーバーを再起動してみてください。これはあなたのコンピュータを傷つけません!ローカルホストポート上の既存のrubyプロセスを強制終了するだけです。新しいサーバーは、これらのプロセスを最初からやり直します。幸運を!


0

Windows用のソリューション:

  1. \ tmp \ pids \ server.pidのpidを参照してください
  2. 管理者としてcmdを開きます
  3. taskkill / F / PID [ステップ1のpid]
  4. server.pidファイルを削除します
  5. サーバーを再起動します

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