【发布时间】: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
【问题讨论】:
-
你检查过
whenevergem吗? -
Delayed_job 实际上运行良好,但我从 cron 启动它时遇到问题,我正在寻找一种方法来首先修复它。
标签: ruby-on-rails cron delayed-job