1
0

railsサーバーを停止せずにターミナルを閉じてしまった時の対処法

Last updated at Posted at 2021-09-27

ターミナルを閉じずにサーバーを止めた時

処理をしている時、サーバーを止めずにターミナルを閉じると以下のエラーが出ます。

Address already in use - bind(2) for "0.0.0.0" port 3000」

A server is already running. Check /Users/taro/git/hello_world_rails/tmp/pids/server.pid.
Exiting

のようなエラーが出ます。

この状態だと control + c でサーバーを止めても、処理は続いていることになります。

現在動いてるプロセスを確認する

サーバーが動いている時、プロセスIDというものがあります。
これを下のコマンドで調べる必要があります。

$ lsof -i:3000

⚫︎補足
3000はポート番号です。
ポート番号の説明は下の記事から確認してください。

そうすると下のような表示が出ます。

COMMAND   PID             USER   FD   TYPE              DEVICE SIZE/OFF NODE NAME
ruby    70515     taro    13u  IPv4  0xdf4c50ba54cadac7      0t0  TCP localhost:hbci (LISTEN)
ruby    70515     taro   15u  IPv6 0xdf4c50ba63f7e187      0t0  TCP localhost:hbci (LISTEN)

上ののPID 70515がプロセスIDです。このIDは毎回変わります。

サーバーを停止する方法

下のコマンド実行します。

$ kill 70515

これでサーバーが止まります。番号は毎回変わるので注意してください。

もし上のやり方で止まらない場合は-9を使ってください。強制オプションです。

kill -9 70515

下のコマンドで止まったか確認できます。

$ ps -ax | grep ruby

コンテナ内に入ってしまった時

今この状態です。

% make bash
docker compose run --rm api bash
bash-5.1# lsof -i:3000
1       /bin/bash       0       /dev/pts/0
1       /bin/bash       1       /dev/pts/0
1       /bin/bash       2       /dev/pts/0
1       /bin/bash       255     /dev/pts/0
bash-5.1# bundle exec rails s
=> Booting Puma
=> Rails 7.0.8 application starting in development 
=> Run `bin/rails server --help` for more startup options
A server is already running. Check /opt/app/tmp/pids/server.pid.
Exiting 

このようにrailsサーバー起動しません。その時に以下のやり方で対処しました。
まずlsof -i:3000の結果からは、ポート3000を使用しているプロセスが表示されていません。
しかし、rails sを実行した際に

A server is already running. Check /opt/app/tmp/pids/server.pid. Exiting

というメッセージが表示されており、サーバーが既に起動していると判断されています。

rm tmp/pids/server.pid

サーバーが正しく停止されなくてserver.pidファイルが残っている可能性があったので。
手動で削除してから再度rails sを試してみました。

その後に

docker compose down
docker compose up -d

などで再起動しました。後ブラウザが更新されていなかったので更新しました。(これが原因かは不明ですが)

参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0