Address already in use の対処法


はじめに

サーバーを再起動しようとしたときに、 Address already in use がでるので、対処法をメモ。

原因

httpdが正常に終了していない、プロセスを終了せずにターミナルを閉じる等により古いプロセスが残っているのが原因。
雑に消しちゃいけないね。。。

解決方法

# プロセスの確認(rails)
$ ps ax | grep rails
7532 .....

# ポートNoが分かっていればこれで確認できる
$ lsof -i:ポートNo

# http
lsof -i | grep http
7532 .....

上記コマンドで該当のPIDをを見つけ、killすれば解決する

$ kill -9 [該当のPID]

-9 は強制終了のオプションなんですが、なぜかこれを付けてプロセス終了させると再度同じポートのプロセスが立ち上がるという現象が発生して無限ループに陥ることがありました・・・

その解決方法としては、 -9 のオプションを付けないということでした・・・

$ kill [該当のPID]

終わりに

エラー内容をよく読まずにだいぶ苦戦してました。

つら。