代码之家  ›  专栏  ›  技术社区  ›  duenni

Openshift中的Cronjob停止工作

  •  0
  • duenni  · 技术社区  · 12 年前

    我在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
    

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

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

    编辑2:使用相同的指令从头开始重新构建应用程序,它可以工作。Openshift平台的一些更新似乎破坏了我的应用程序。我仍然想知道发生了什么,但我不知道从哪里看。

    3 回复  |  直到 12 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    日志中的错误似乎表明找不到bundle命令。这意味着未安装bundler宝石或其他东西。

    它应该与此相关 question in SO 。您可以通过中的链接访问OpenShift错误报告。

    问题是,在之前的OpenShift更新中,Ruby1.9盒带本应使用Ruby1.9.3,但不知怎么改为Ruby1.8。因此,当Ruby 1.9使用Ruby 1.8时,将找不到许多安装在Ruby 1.9中的gem。解决方法是在cron脚本中导出PATH和LD_LIBRARY_PATH(请参阅错误报告)。

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

    很高兴在这里看到一位资深用户。:)

        2
  •  1
  •   user2879327 user2879327    12 年前

    这些是我需要运行的一些命令,您可能需要执行类似的操作

    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
    
        3
  •  1
  •   Anshul Goyal    12 年前

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

    ps -Z 要查看进程的上下文,请检查目录上的权限 ls -Z 以确保上下文适当。