railsの開発でshoryukenのgemを使っているのですがcapistranoでデプロイ時たまに終了してくれないことがあり、アップデートなどしてみたのですが改善せずシェルスクリプトで正常に終了していないプロセスを定期的に終了するようにしました。
使い方
引数にpidファイルを渡すだけです。
./shoryuken_process_clean.sh `pwd`/tmp/pids/shoryuken.pid
実際はこのファイルを/usr/local/bin
などに置いてcronで毎分実行させています。
処理内容
現在起動しているshoryukenのプロセスを
ps aux | awk '$11 == "ruby" && $12 ~ /shoryuken$/ {print $2}'
で取得してこの中からpidファイルに含まれていないpidのプロセスに対してUSR1のシグナルを送って終了させています。