cront タブを作成して、delayed_job サーバーが壊れた場合に再起動したいと考えています。
ps コマンドを使用して、delayed_job サーバーが実行されているかどうかを確認するにはどうすればよいですか?
この動作を確認するための cron タブを作成するにはどうすればよいですか? 私のサーバーがcronタブよりも壊れた場合のように、それを再起動します。crontタブを5分ごとにチェックするように設定したい。
cront タブを作成して、delayed_job サーバーが壊れた場合に再起動したいと考えています。
ps コマンドを使用して、delayed_job サーバーが実行されているかどうかを確認するにはどうすればよいですか?
この動作を確認するための cron タブを作成するにはどうすればよいですか? 私のサーバーがcronタブよりも壊れた場合のように、それを再起動します。crontタブを5分ごとにチェックするように設定したい。
これは、pidファイルが作成されているかどうかをチェックする私のスクリプトです。pidファイルが存在しない場合は、delayed_jobサーバーを起動します。アプリケーションのルートフォルダにスクリプトを作成しましたこれはスクリプトdelayed_job.shです
if ! [ -s delayed_job.pids ]; then
RAILS_ENV=production /app/script/delayed_job start
end
そして、私はこのスクリプトをこのようにcrontabに設定しました。
*/5 * * * * RAILS_ENV=production /bin/bash /app/delayed_job.sh
正常に動作しています。delay_jobサーバーを壊すと、delayed_jobサーバーが自動的に起動します。それは適切な方法ですか?
delayed_job プロセスが 1 つある場合の正しい方法は次のとおりです。
#!/bin/bash
if ! [ -s #{pids_dir}/delayed_job.pid ]; then
RAILS_ENV=production #{RAILS_APP}/script/delayed_job start
fi
これが私の解決策です。開始したジョブが1つなのか、複数あるのかを確認します。そうした場合はやめ、そうでない場合は2人の労働者で仕事を始めます。あなたはおそらくその/usr/local/bin/ruby
部分を必要としないでしょう。
#!/bin/bash
if [[ ! -f /apps/gits/myapp/tmp/pids/delayed_job.pid
&& ! -f /apps/gits/myapp/tmp/pids/delayed_job.0.pid ]];
then
echo "DJ not running"
cd /apps/gits/myapp
RAILS_ENV=production /usr/local/bin/ruby script/delayed_job -n 2 start
echo "DJ Started"
else
echo "DJ running"
fi
そして、私のcronは1時間ごとに実行されますが、bashが実行可能であることを確認してください。
0 */1 * * * /apps/gits/scripts/start_dj_if_not_running.sh
>> /apps/gits/myapp/log/runner.log 2>&1
delay_job の管理にはrunit/svを使用しています。監視、自動再起動、ロギングが含まれます。
cron に固執しない場合は、Monit の方が便利かもしれません。 http://mmonit.com/monit/