Openshift的Cronjob停止了工作

时间:2014-03-23 08:21:00

标签: ruby cron redhat openshift

我在Openshift运行了一个cronjob,直到几天前一直很好,现在突然它停止工作了。 这是脚本: fetch_feeds

. /usr/bin/rhcsh
pushd ${OPENSHIFT_REPO_DIR} > /dev/null
bundle exec rake fetch_feeds RACK_ENV="production"
popd > /dev/null

执行位已设置。它一直工作,我没有推动应用程序的更新。我可以通过ssh登录并手动执行

cd app-root/repo/.openshift/cron/hourly/
sh ./fetch_feeds

日志说

/var/lib/openshift/xxxxxx/app-root/runtime/repo//.openshift/cron/hourly/fetch_feeds: line 3: bundle: No such file or directory

但是如果我进入目录并执行bundle它就可以了。 强制停止和启动应用程序不起作用。我不想重新创建应用程序,因为我会丢失一些设置。知道我还能做什么吗?谢谢!

编辑: 删除和重新添加cron-cartridge并没有改变任何内容。

EDIT2:使用相同的说明从头开始重新构建应用程序,它可以工作。似乎对Openshift平台的一些更新在我的应用程序中出现了问题。我仍然想知道发生了什么,但我不知道在哪里看。

3 个答案:

答案 0 :(得分:2)

日志中的错误似乎是说无法找到bundle命令。意味着未安装bundler gem或其他东西。

它应与此question in SO相关。您可以按照OpenShift错误报告中的链接进行操作。

问题在于,使用之前的OpenShift更新,Ruby 1.9盒式磁带应该使用Ruby 1.9.3,但它以某种方式改为Ruby 1.8。因此,使用Ruby 1.8时,许多使用Ruby 1.9安装的gem都无法找到。解决方法是在cron脚本中导出PATH和LD_LIBRARY_PATH(请参阅错误报告)。

注意到您再次尝试,因此错误修复可能已经推送到OpenShift。不太确定。

很高兴在这里看到一个同伴纵梁用户。 :)

答案 1 :(得分:1)

这些是我需要为我的papertrailapp墨盒运行的一些命令,你可能需要做类似的事情

https://github.com/openshift-cartridges/openshift-papertrailapp-cartridge/blob/master/bin/setup

#!/bin/bash -eu

export PATH=/opt/rh/ruby193/root/bin:$PATH
export LD_LIBRARY_PATH=/opt/rh/ruby193/root/usr/lib64
mkdir $OPENSHIFT_PAPERTRAILAPP_DIR/logs
cd $OPENSHIFT_PAPERTRAILAPP_DIR && bundle install

答案 2 :(得分:1)

你检查过安全上下文了吗?

ps -Z查看您的流程的上下文,然后检查目录ls -Z上的权限,以确保上下文合适。