1

cront タブを作成して、delayed_job サーバーが壊れた場合に再起動したいと考えています。

ps コマンドを使用して、delayed_job サーバーが実行されているかどうかを確認するにはどうすればよいですか?

この動作を確認するための cron タブを作成するにはどうすればよいですか? 私のサーバーがcronタブよりも壊れた場合のように、それを再起動します。crontタブを5分ごとにチェックするように設定したい。

4

5 に答える 5

4

これは、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サーバーが自動的に起動します。それは適切な方法ですか?

于 2010-06-23T17:45:38.400 に答える
2

delayed_job プロセスが 1 つある場合の正しい方法は次のとおりです。

#!/bin/bash

if ! [ -s #{pids_dir}/delayed_job.pid ]; then  
  RAILS_ENV=production #{RAILS_APP}/script/delayed_job start  
fi
于 2010-12-29T10:43:22.083 に答える
0

これが私の解決策です。開始したジョブが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
于 2012-09-21T22:57:18.127 に答える
0

delay_job の管理にはrunit/svを使用しています。監視、自動再起動、ロギングが含まれます。

于 2010-06-23T21:31:08.720 に答える
0

cron に固執しない場合は、Monit の方が便利かもしれません。 http://mmonit.com/monit/

于 2010-06-24T04:03:00.583 に答える