問題
いつも通り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操作に関してのイシューだったようだ。
参照