我在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平台的一些更新在我的应用程序中出现了问题。我仍然想知道发生了什么,但我不知道在哪里看。
答案 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
上的权限,以确保上下文合适。