Just do IT

思うは招く

rails s をしてサーバー起動したら Address already in use エラーが出て起動できない

問題

いつも通りrails sをしてサーバーを起動しようとしたら、「port 3000はもう使われてるよ」って言われた。

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

いやいや、起動させてないし。

解決

lsof -i :3000とコマンドを打つことで、3000番ポートに接続しているアプリケーションを表示してくれる。

$ lsof -i :3000
COMMAND   PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby    94849 kotakanazawa   12u  IPv4 0x3f8df2af2b688d5b      0t0  TCP localhost:hbci (LISTEN)
ruby    94849 kotakanazawa   13u  IPv6 0x3f8df2af081c6c1b      0t0  TCP localhost:hbci (LISTEN)

見つけた。 PIDをコピーして、killする。

kill -QUIT 94849
or
kill -9 94849

解決した。

微妙だった解決法

プロセスを確認しようと以下のコマンドを実行した。

ps ax | grep rails

しかしこれでは表示量が多すぎて萎えた。

原因

tmux内でサーバーを立ち上げた後、tmuxをしっかり終了せずにターミナルを閉じてしまったのが原因ぽい。 Railsというより、OS操作に関してのイシューだったようだ。

参照