##背景
rails s
実行中にエラーが起き、control+C
で終了出来なかったため、control+Z
で強制終了し、再度起動すると
ターミナル.
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
A server is already running. Check /Users/ユーザー名/projects/test/tmp/pids/server.pid
Exiting
と上記のようなものが出た。
/Users/ユーザー名/projects/test/tmp/pids/server.pid
はサーバー起動する際に使用しているID。本来であればサーバーを終了したら、このIDも削除されるはずだが、今回のような強制終了により、IDが残ってしまうことがある。
##解決策
本来は自動で削除されるであろうこのIDを手動で消してあげれば、解決する。
手順
①server.pidの削除
②処理の終了
###①server.pidの削除
ターミナル.
rm -f Users/ユーザー名/projects/test/tmp/pids/server.pid
###②処理の終了
まずは処理の一覧を表示させる。
lsof -i:3000
上記のコマンド実行結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Google 45385 ユーザー名 43u IPv6 0x839bb4867fea3c69 0t0 TCP localhost:64733->localhost:hbci (ESTABLISHED)
Google 45385 ユーザー名 47u IPv6 0x839bb48685588da9 0t0 TCP localhost:64734->localhost:hbci (ESTABLISHED)
ruby 67430 ユーザー名 21u IPv4 0x839bb4869b17f329 0t0 TCP localhost:hbci (LISTEN)
ruby 67430 ユーザー名 22u IPv6 0x839bb4868abc95e9 0t0 TCP localhost:hbci (LISTEN)
ruby 67430 ユーザー名 40u IPv6 0x839bb4867fea5ee9 0t0 TCP localhost:hbci->localhost:64437 (CLOSE_WAIT)
ruby 67430 ユーザー名 44u IPv6 0x839bb4868abc9029 0t0 TCP localhost:hbci->localhost:64196 (CLOSE_WAIT)
ruby 67430 ユーザー名 45u IPv6 0x839bb4867fea7029 0t0 TCP localhost:hbci->localhost:64733 (ESTABLISHED)
ruby 67430 ユーザー名 46u IPv6 0x839bb4868558aa69 0t0 TCP localhost:hbci->localhost:64734 (ESTABLISHED)
「COMMAND」に「ruby」と記載のある行のPIDをコピーして(この場合だと67430)を削除すると処理の終了ができる。
kill -9 消したい番号
上記の例だと
kill -9 67430
となる