1
0

More than 1 year has passed since last update.

[Rails] Address already in use が発生してrails sができなかった

Last updated at Posted at 2022-03-23

前提

・Dockerで環境構築をしている
・Rails 6.1.5

エラーの内容

`initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)

原因

既に3000Portが使われているため同じポート番号は使えないよというエラー

解決策

3000Portを使用しているプロセスを終了する

①3000Portを使用しているプロセスの番号を調べる

# 現在、実行しているプロセスを表示するコマンド
$ ps -x

  PID TTY      STAT   TIME COMMAND
    1 pts/0    Ss+    0:00 irb
    8 pts/1    Ss+    0:00 /bin/bash
   15 pts/2    Ss+    0:00 /bin/bash
   32 pts/1    Z+     0:00 [ruby] <defunct>
   64 pts/3    Ss+    0:00 /bin/bash
  919 pts/4    Ss     0:00 /bin/bash
 1559 pts/1    Sl+    0:00 spring server | rails-app | started 72 hours ago
 2288 pts/4    Sl+    0:20 puma 5.6.2 (tcp://0.0.0.0:3000) [rails-app]
 2689 ?        Ssl   13:18 spring app    | rails-app | started 45 hours ago | test mode
 2690 ?        Ssl   13:19 spring app    | rails-app | started 45 hours ago | development mode
 2728 pts/5    Ss     0:00 /bin/bash
 3115 pts/5    R+     0:00 ps -x

後から気づいたがプロセス多いと探すの大変だからgrepで検索する方が良さそう

$ ps -x | grep 0.0.0.0:3000

 2288 pts/4    Sl+    0:01 puma 3.12.6 (tcp://0.0.0.0:3000) [rails_app]
 3168 pts/5    S+     0:00 grep 0.0.0.0:3000

②killコマンドでプロセスを終了する

# killコマンドにはPIDの番号を渡す
$ kill 2288

もう一度ps -xで確認するとプロセスが消えているはずだが、消えていなければ下記のコマンドで強制終了する

#-9オプションで強制終了
$ kill -9 2288

プロセスが終了していることを確認したらrails sすれば起動できるはず。

1
0
1

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