Railsサーバーが何らかの原因で急にシャットダウンし、再起動しようと$ rails sしようと思っても、
A server is already running.
と言われる。
すでにサーバー起動してるよと言われても、実際はサーバーを起動できなくて困る、なんてエラーがたまに起こります。
$ rails s
=> Booting Puma
=> Rails 7.0.3 application starting in development
=> Run `bin/rails server --help` for more startup options
A server is already running. Check /Users/ユーザー名/Desktop/Ruby_on_Rails/user-authentication/tmp/pids/server.pid.
Exiting
どうやらバックグランドではサーバーが動いたままなので、これをどうにかして強制終了させたい。
そこで、以下のコマンドを実行すると、
$ lsof -wni tcp:3000
$ lsof -wni tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 9807 ユーザー名 10u IPv4 0x9e287b17ee747f09 0t0 TCP 127.0.0.1:hbci (LISTEN)
ruby 9807 ユーザー名 11u IPv6 0x9e287b0e56bf7ac1 0t0 TCP [::1]:hbci (LISTEN)
ruby 9808 ユーザー名 10u IPv4 0x9e287b17ee747f09 0t0 TCP 127.0.0.1:hbci (LISTEN)
ruby 9808 ユーザー名 11u IPv6 0x9e287b0e56bf7ac1 0t0 TCP [::1]:hbci (LISTEN)
バックグラウンドで動いているサーバー情報が表示されます。
サーバーを強制終了するためには、このリストの中のPID番号を利用して、以下のコマンドを実行します。
$ kill -9 PID番号
表示されているPID番号のプロセス全てに対して上記コマンドを実行後、再びターミナルで、
$ rails s
すれば無事にサーバーが起動するはずです。
コメント