開発中に動作がおかしくなった時
LinuxやmacOSなどのUnix系システムでは、ユーザーやシステムが実行させている作業は「プロセス (process)」と呼ばれる、一種のコンテナの内部で実行されています。システム上で動いているすべてのプロセスは、ps
コマンドにaux
オプションを付けて実行することで確認できます。
$ ps aux
プロセスの種類を指定してフィルタするには、ps
の結果をUnixの「パイプ」|
でつないで、パターンマッチャーであるgrep
に渡します。
$ ps aux | grep spring
ec2-user 12241 0.3 0.5 589960 178416 ? Ssl Sep20 1:46
spring app | sample_app | started 7 hours ago
表示結果の中で重要なのは最初の列の数値です。これはプロセスid、略してpidと呼ばれるものです。不要なプロセスを排除するには、kill
コマンドでpidを指定し、Unixのkillコード (Cloud9の場合、シグナル番号は15) を発行します。
$ kill -15 12241
行儀の悪いRailsサーバーなどのプロセスをkillする際には、上のように1つずつkillすることをおすすめします。Railsサーバーのpidを知るには、ps aux | grep server
)などと実行します。しかし時には特定の名前を持つプロセスをまとめてkillしたいこともあります。しつこいspring
プロセスたちを1つずつkillするのは大変面倒です。一括killを行うには、最初にspring
コマンドそのものでプロセスを停止しておく必要があります。
$ spring stop
このコマンドが効かないことも多いので、そのときはいよいよpkill
コマンドでspring
の名前を指定してkillします。
$ pkill -15 -f spring
開発中に動作がおかしくなったりプロセスがフリーズしていると思えたら、すぐにps aux
で状態を確認し、kill -15 <pid>
やpkill -15 -f <プロセス名>
で整理してみましょう。
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-guard