cron选项卡重新启动我的delayed_job服务器

时间:2010-06-23 14:27:29

标签: ruby-on-rails ruby crontab delayed-job

我想创建一个cront选项卡,以便在delay_job服务器中断时重新启动它。

如何使用ps命令检查我的delayed_job服务器是否正在运行?

我怎样才能创建一个cron选项卡来检查这个东西是否正常工作?就像我的服务器中断而不是cron tab会重启它。我想设置cront tab每5分钟检查一次。

5 个答案:

答案 0 :(得分: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

工作正常。如果我打破delayed_job服务器,它将自动启动我的delayed_job服务器。这是一种正确的方式吗?

答案 1 :(得分:2)

如果你有一个delayed_job进程,正确的方法是:

#!/bin/bash

if ! [ -s #{pids_dir}/delayed_job.pid ]; then  
  RAILS_ENV=production #{RAILS_APP}/script/delayed_job start  
fi

答案 2 :(得分:0)

我使用runit/sv来管理delayed_job。包括监控,自动重启,日志记录。

答案 3 :(得分:0)

如果你不坚持使用cron,Monit可能会更有用。 http://mmonit.com/monit/

答案 4 :(得分:0)

这是我的解决方案。我检查你是否开始了一份工作,或者你有多个工作。如果你这样做,退出,否则就开始与两名工人一起工作。您可能不需要/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每小时运行一次,只需确保bash是可执行的。

0 */1 * * * /apps/gits/scripts/start_dj_if_not_running.sh 
               >> /apps/gits/myapp/log/runner.log 2>&1