ruby - 通过monit重新启动delayed_job脚本会中断/usr/lib/ruby/2.3.0/rubygems/core_ext/kern
问题描述
所以我正在尝试使用 monit 来监控我的延迟作业流程。为了做到这一点,我写了这个
/home/deploy/sites/app.project.com.my/shared/delayed_job.monitrc
check process delayed_job_0
with pidfile /home/deploy/sites/app.project.com.my/shared/pids/delayed_job.0.pid
start program = "/home/deploy/sites/app.project.com.my/shared/delayed_job.sh start staging 0"
as uid deploy and gid deploy
stop program = "/bin/su - deploy -c '/home/deploy/sites/app.project.com.my/current/bin/delayed_job stop staging 0'"
group delayed_job
我也写了这个脚本
/home/deploy/sites/app.project.com.my/shared/delayed_job.sh
#!/bin/bash
APP_NAME=app.project.com.my
APP_DIR=/home/deploy/sites
RAILS_ROOT=$APP_DIR/$APP_NAME/current
LOG_FILE=$APP_DIR/$APP_NAME/shared/delayed_job_monit.log
exec 2>&1
if [ "$3" ]; then
RUNNER="$3"
else
RUNNER=0
fi
echo "Runner: $RUNNER"
ENVIRONMENT=$2
echo "Env: $ENVIRONMENT"
PID_FILE=$RAILS_ROOT/tmp/pids/delayed_job.$RUNNER.pid
echo "Pid: $PID_FILE"
cd $RAILS_ROOT
echo "Received $1"
function stop {
cd $RAILS_ROOT
RAILS_ENV=$ENVIRONMENT /usr/bin/env bin/delayed_job stop -i $RUNNER
}
function start {
if [ -f $PID_FILE ]; then
echo "Pid Found. Deleting PID FILE: $PID_FILE"
rm -f $PID_FILE
fi
CMD=" /usr/bin/env RAILS_ENV=$ENVIRONMENT bin/delayed_job start -i $RUNNER"
cd $RAILS_ROOT
exec $CMD
}
case $1 in
start)
stop
start
;;
stop)
stop
;;
*)
echo "WTF"
;;
esac
现在当在这个文件夹中时/home/deploy/sites/app.project.com.my/shared/
,如果我像这样运行delayed_job.sh 脚本./delayed_job start staging 0
。它工作正常,delayed_job 重新启动。
但是当我运行 monit 脚本时sudo monit start delayed_job_0
,我得到一个错误/usr/lib/ruby/2.3.0/rubygems/core_ext/kern
目前不知道如何摆脱这个错误。
解决方案
推荐阅读
- reactjs - 无法配置现有的 React-Native 项目
- javascript - 如何在firebase实时数据库中限制用户每15分钟发帖一次
- android - 鉴于我已添加依赖项,无法解析 firebasedatabase
- angular - 无法将类属性添加到 Angular 7 中的 DOM 元素
- sql-server - 将计数值分组
- reactjs - 用ant-design在react js中提交后清除表单输入字段值
- python - 在 Python 中从列表中检索浮点值
- amazon-web-services - 如何在 Amazon Linux 2 AMI 中安装 GUI(桌面)
- json - 在文本输入中加载 json 对象会降低页面性能吗
- android - 磁盘或 USB 或 SD 存储