プロセスをPIDではなく名前で kill する
結論こちらで可能(Amazon Linuxで動くよ!)
プロセス名を指定して kill できます
pgrep -f 'プロセス名' | { read v ;kill -9 $v; }
使い方
まずはこちらで殺したいプロセスの名前を調べましょう。
ps aux | grep プロセス名
railsで unicorn のプロセスを殺したい場合はこんな感じ。
ps aux | grep unicorn
時間の右に書いてあるのがプロセス名
今回の場合は unicorn_rails
になるのですが。
unicorn_rails
で絞るとその下にある worker[0]~[3] も引っかかってしまいます。
なので一意になるように unicorn_rails master
で検索します(スペースが入る場合は文字列にしてね!
grep で絞る感じです
unicorn_rails のプロセスを名指しで kill したい場合。
pgrep -f ' unicorn_rails master' | { read v ;kill -9 $v; }
restartコマンドが用意されていないプロセスを再起動するコマンドを作る
function を使うとメソッドを定義でき一連の処理を自動化できます。
例えば rails の unicorn プロセスを再起動させたい場合はこんな感じで作れます。
unicorn restart
function unicorn_restart(){
pgrep -f 'unicorn_rails master' | { read v ;kill -9 $v; }
bundle exec unicorn_rails -c /var/www/www.hoge.net/current/config/unicorn/production.rb -E production -D
}
unicorn_rails には再起動コマンドは用意されていないので、自作すると非常に便利ですね
いちいちプロセスIDを調べて kill -9 で ID しなくてよいので
本番環境でのバグ調査などで非常に役立ちます(バグ調査するときは別でサーバ立ててね!)
手動で頑張る場合
ps aux | grep unicorn
kill -9 12345