あー、ローカル環境のRailsバグったなと思った時に待つのめんどいので強制的にプロセスを終了させる時のメモです。いつも自分でやってますが、久しぶりにQittaに投稿してみようと思ってサクッとメモに残しました。
$ rails server
=> Booting Puma
=> Rails 5.1.4 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.10.0 (ruby 2.4.1-p111), codename: Russell's Teapot
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
ご丁寧に Use Ctrl-C to stop
で止めてねって書いてあるので、 control + c
でサクッと消える時もあります。以下のように。
Use Ctrl-C to stop
^C- Gracefully stopping, waiting for requests to finish
=== puma shutdown: 2018-10-24 01:06:40 +0900 ===
- Goodbye!
Exiting
しかし、待てど暮らせどダメな時もあります。
そんな時は、 lsof
コマンドで動いてるものを探し出してきて、killしましょう。
# 3000番で動いてるプロセス探す
$ lsof -i:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 33783 kanuu 19u IPv4 0x1ee1c75a9552b9ad 0t0 TCP *:hbci (LISTEN)
# 上記のPIDの番号をkillする
$ kill -9 33783
# サーバーのログ
Killed: 9
これで止まったはずです。
以上です。
追記
ゴニョゴニョ書きましたが、ワンライナーでいけると教えていただきました。
便利です。勉強になりました。
$ kill -9 $(lsof -i tcp:3000 -t)
pumaをkillすることでもいけました。
$ pkill -f puma