0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rails s時の「Address already in use」の解決方法

Last updated at Posted at 2021-12-31

rails s でローカルホスト3000を立ち上げようとした時に、「Address already in use」というエラーが出て起動ができない問題が派生しました。
その際に実施した解決法について備忘録としてまとめます。

以下エラー文です

qiita.rb
Address already in use - bind(2) for "127.0.0.1" port 3000 (Errno::EADDRINUSE

翻訳すると、ローカルホスト3000は既に立ち上がっている。という意味なので、ターミナルを全て終了させたのですが、改善しませんでした。

エラーの原因としては、アプリの動作中にctrl cで強制終了させた事のようです。
その際に行った対処法は
①lsof -i:3000コマンドで、ローカルホスト3000を使用しているアプリを見る
②kill -9 PID番号で該当するPID番号のプロセスを終了させる
という手順です。
順番に説明します。

#「lsof -i:3000」 コマンド

まずはlsof -i:3000 コマンドを実行してローカルホスト3000を使用しているアプリを確認します。

qiita.rb
 % lsof -i:3000

実行してみると以下のような情報が出力されました。

qiita.rb
COMMAND  PID          USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ruby    6455 user            14u  IPv4 0xb13e455940b92b7      0t0  TCP localhost:hbci (LISTEN)
ruby    6455 user            15u  IPv6 0xb13e455924f2e87      0t0  TCP localhost:hbci (LISTEN)
ruby    6455 user            27u  IPv6 0xb13e455924f4707      0t0  TCP localhost:hbci->localhost:53230 (CLOSE_WAIT)
ruby    6455 user            30u  IPv6 0xb13e455924f40e7      0t0  TCP localhost:hbci->localhost:53244 (CLOSE_WAIT)

実行結果としてPID:6455 が占有してしまっている事が分かります。

#「kill -9 PID番号」 コマンド
 PID:6455を強制終了するために、kill -9コマンドを使います。

qiita.rb
  % kill -9 6455

実行して、rails sをすると無事にサーバーを立ち上げる事ができました。

#補足① 「lsof -i:3000」の意味
 さて今回使った「lsof -i:3000」とはどのような意味なのでしょうか。
まず「lsof」は、オープンしているファイル一覧を示すコマンドです。
lsofコマンドは lsofには様々なオプションを指定する事ができます。
今回はオプションに ポート番号などを指定できる「-i」を指定しました。
従って「lsof -i:3000」とするとローカルホスト3000を指定できます。

*参考文献
lsofコマンドについて
https://atmarkit.itmedia.co.jp/ait/articles/1904/18/news033.html

#補足② 「kill -9 PID番号」の意味
 killコマンドは実行しているプロセスを終了させるコマンドです。
続く「-9」はプロセスを強制終了させるオプションです。
今回は「kill -9 6455」とする事で、PID番号6455を強制終了させました。

*参考文献
killコマンドについて
https://eng-entrance.com/linux-command-kill

#まとめ
 今回のエラーは、アプリの動作中にctrl cで強制終了させた事が原因でした。 
対処法として、lsofコマンドでポート番号3000を参照して、killコマンドでプロセスを終了させました。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?