Railsサーバーを終了させるシェルスクリプト
(12/16更新)
いや、実は・・・。
以前に端末のショートカット設定をやったときに、Ctrl+C
をコピーに設定していたようで(汗
それじゃあkill
できないよね・・・。
というわけで設定し直したのがこちら:
【Ubuntu】端末のキーボードショートカット設定(コピぺできるように) - ハイパーニートプログラマーへの道
これでCtrl+C
でkill
できるようになりました・・・。
今記事のようにシェルスクリプトを作る必要はなかったんや・・・。
shell script to kill rails s
Ubuntu14.04にてRuby on Rails4をインストール(ctrl + cが効かない・・・だと?) - ハイパーニートプログラマーへの道
どうしてもctrl + c
で止まらん。PID調べるのもめんどい。というわけで
まずPIDだけ取得
まずコマンド打って試してみます。ctrl + z
でサーバーを停止させたあと・・・。
$ ps aux | grep rails[[:space:]]s noriyo_+ 3297 3.2 3.4 175080 71548 pts/0 Tl 17:21 0:01 /home/noriyo_tcp/.rvm/rubies/ruby-2.1.1/bin/ruby bin/rails s $ ps aux | grep rails[[:space:]]s | awk '{print $2}' 3297
逆引きUNIXコマンド/grepでタブを検索する方法 - Linuxと過ごす
を参考に。[:space:]
では空白もタブも区別できないそうですが、今の場合はまあいいかと。rails
とs
のあいだの空白をなんとかできればいいので。
ps aux | grep rails[[:space:]]s | awk '{print $2}'
を記述したスクリプトを作るかと。
ちゃんとシェルスクリプト作るのって初めてのような希ガス
homeにbinつくっちゃえばいいのかな?(適当)
$ cd $ mkdir bin $ cd bin/ $ vi killrails_s.sh
killrails_s.sh
という名前で
まずPIDだけ出すスクリプト
参考にしたのはここら辺
プロセスの名前からプロセスをkillするには? - Linux入門
$ vi killrails_s.sh #!/bin/sh ps aux | grep rails[[:space]]s | awk '{print $2}'
実行権限与えての確認と。
$ chmod u+x killrails_s.sh $ ls -l killrails_s.sh -rwxrw-r-- 1 noriyo_tcp noriyo_tcp 61 9月 23 20:14 killrails_s.sh
.bashrc
にパスを追加して反映させて・・・
export PATH="$PATH:$HOME/bin"
$ source ~/.bashrc
試してみる
またサーバーを一時停止させたあと
$ killrails_s.sh 2557 $ kill -9 2557 $ fg bash: fg: ジョブは終了しました [1]+ 強制終了 rails s
PIDを取得後、それをkill -9
で指定してkill。fg
してもこのように「終了しました」と。
一気にkillもしてくれるようにする
kill -9 `ps aux | grep rails[[:space:]]s | awk '{print $2}'`
先ほどのコマンドを`で囲って、その実行結果をkill -9
の引数にしてしまう。
^Z [1]+ 停止 rails s $ killrails_s.sh $ fg bash: fg: ジョブは終了しました [1]+ 強制終了 rails s
できた・・・よね?
何かまずいことがあるか分からんですけど、とりあえずこれで。
ctrl + z
はめんどいけど、それは分けといた方がいいのかなあと。
参考記事;
プロセスの名前からプロセスをkillするには? - Linux入門
逆引きUNIXコマンド/grepでタブを検索する方法 - Linuxと過ごす
[bash] シェルスクリプト入門 ~シェルスクリプトのいろは~ - SUNONE BLOG
ITmedia エンタープライズ : Linux Tips「パスを追加したい〜.bashrc編〜」
Windowsユーザーに教えるLinuxの常識(3):各ディレクトリの役割を知ろう(サブディレクトリ編) (2/2) - @IT