おーしまブログ

プログラミングやってます

【解決】rails sしたままターミナルを落とした時の対処

こんにちは、おーしまです。

今回は、rails sしたままターミナルを落とした時の対処法についてです。


ターミナルでrails sして、サーバーを起動させたままターミナルを落としてしまい、
もう一度、rails sしようとすると、

Address already in use - bind(2) for 127.0.0.1:3000 (Errno::EADDRINUSE)

というエラーが起きます。

でも実際、このエラー文を出すためにわざとrails sしたままターミナルを落としたけど、
エラーは起きなかった。起きる時と起きない時があるのか、、、(上のエラー文はお借りしました。)


とにかく、上のエラー文が出るということは、

前回のrails sでのサーバーが起動したままで、新しくサーバーを起動できないってことです。


対処法

ターミナルで

lsof -i :3000

と入力。

これで、現在 localhost:3000 に接続されているやつ?が出てきます。(詳しくは分かりません)

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    24575  *****    6u  IPv4 161869      0t0  TCP *:3000 (LISTEN)

次はPIDに注目します。上記では、24575
これは、rails s でサーバーを起動させた時にできるランダムの数字です。

これを削除します。

kill -QUIT PID
kill -9 PID


調べると、2種類やり方がありましたが、私は上の方で成功しました。
多分上が新しいやつだと思う。。。

PIDには先ほど調べたPIDの数字が入ります。(上記では24575)


今回はここまでです。
それでは、また〜

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}