【问题标题】:Restarting delayed_job with cron使用 cron 重启 delay_job
【发布时间】:2014-03-27 22:30:02
【问题描述】:

如果delayed_job 正在运行,我想每小时检查一次。为此,我正在使用 cron

29 * * * * /var/jenkins/jobs/Production/workspace/integration/check_runnig_jobs.sh

脚本如下。 当它自己执行时,它会启动delayed_job。但是当从 cron 执行时,它无法启动并向 /var/mail/www-data 发送邮件,即:

19:19:01:开始检查... 19:19:01:检查延迟作业 - 19:19:01:未运行,正在重新启动... 在任何来源中都找不到 i18n-0.6.0 尝试运行bundle install。 + 19:19:01:delayed_job 正在运行

之后在运行的进程中找不到delayed_job。

您能帮助我们吗?

脚本是

#!/bin/bash
# Check jobs that should be running on the production environment. This script might be    croned or run by jenkins,

check_process() {
  echo "$ts: checking $1"
  [ "$1" = "" ] && return 0
  [ `pgrep -fn $1` ] && return 1 || return 0
}

check_delayed_job() {
        RAILS_ENV=production
        export RAILS_ENV
        name="delayed_job"
        check_process $name
        [ $? -eq 0 ] && echo "- $ts: not running, restarting..." &&    /var/jenkins/jobs/Production/workspace/script/delayed_job start
        [ $? -eq 1 ] && echo "+ $ts: $name is RUNNING"

        return 0
}

# timestamp
ts=`date +%T`

echo "$ts: begin checking..."
check_delayed_job

exit 0

【问题讨论】:

  • 你检查过whenever gem吗?
  • Delayed_job 实际上运行良好,但我从 cron 启动它时遇到问题,我正在寻找一种方法来首先修复它。

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


【解决方案1】:

找到了 - 你必须添加

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/jenkins/jobs/Production/workspace/script
export PATH

在脚本的开头设置环境...

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2011-12-11
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多