6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バックグラウンド起動したRailsサーバプロセスをコマンド1発で終了させるalias

Posted at

はじめに

railsのサーバ起動は rails s -d とすることでバックグラウンド起動ができる。
ところが、バックグラウンドで起動したrailsサーバを終わらすには、プロセス番号を指定してkillしないといけない。
それをalias指定して1コマンドで実現するところが今回のゴール。

コード

最短は下記コマンドで可能。

.bashrc
$ cat tmp/pids/server.pid | xargs kill -9

これにちょっと成功 or 失敗メッセージとかを書き足すと下記。
(メッセージとかはお好みにブレンドしてください。)

.bashrc
alias rails-server-kill="cat tmp/pids/server.pid > /dev/null 2>/dev/null && (cat tmp/pids/server.pid 2> /dev/null | xargs kill -9 2> /dev/null && echo \"[OK] Rails server was killed...\" || echo \"[NG] Already exit...\") || echo \"[NG] Move to rails root directory path.\""

解説

Railsをバックグラウンド起動した際のプロセス番号は tmp/pids/server.pid に書いてあるので、その番号を kill すればいいらしい(正式な方法とかあれば教えてください…)。

ただ、最短コマンドだと成功時に何も言わなかったり、失敗時にはcatやkillコマンドのエラーメッセージとかがが出て不親切なので、色々コネコネして、下記仕様に。

  • 成功時は成功メッセージ
  • 失敗時はエラーメッセージ
    • プロセスがすでに死んでいる場合はその旨を表記
    • 現ディレクトリがrailsルートじゃない場合は移動を促すメッセージを表記

|| とか && とか 2> /dev/null とかが何かは後記している参考文献を見ていただければ。

あとがき

小さなネタで申し訳ないけれど、このような細かい工夫が生産性向上につながると信じてます……。

参考文献

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?