🚔

Railsサーバーの強制ストップ法

1 min read

こちらAmetaです。
先日の記事でも書いたSystemStackErrorが発生した時の事。

https://zenn.dev/swata_dev/articles/139c261d7eb1eb

無限ループが発生してしまったためサーバーを停止するコマンドrails sを入力する事ができませんでした。

この時にローカルサーバーを強制停止させた方法をまとめておきます。

ステップ

  1. ps aux | grep アプリ名でプロセス番号を確認
  2. killコマンドでサーバーを強制停止

ps auxコマンド

psはLinux上で動作しているプロセスを確認するためのコマンド。

auxはpsのオプションでそれぞれa,u,xの組み合わせ。

option role
a 端末操作のプロセスを表示
u CPUとメモリの使用率を表示
x 現在実行しているプロセスのみを表示

これにgrep アプリ名を結合し、アプリのプロセス番号を確認。

ユーザー名    **10857**   0.0  1.1  4580080 177732 s001  S+   10:26AM   0:04.89 puma 3.12.6 (tcp://localhost:3000) [アプリ名] 

この場合、"10857"がプロセス番号。

grepは文字列を検索するコマンド。文字列の後にファイル名を入力すると検索するファイルを指定する事も可能。

killコマンド

killコマンドにプロセス番号を後述する事でサーバーを終了させます。
この時、オプションの-9を付与すると強制終了させる事ができる。

kill -9 10857

以上の操作でローカルサーバーを強制停止させる事ができました。

SOTD

今回オプションなしでkillコマンドを実行してもサーバーを停止する事ができなかったので強制終了のオプションを試してみました。

無限ループに入ってしまった時の応急処置の1つとして、今後も利用できそう。

References

https://eng-entrance.com/linux-command-ps#aux

https://uxmilk.jp/50638