【发布时间】:2014-06-29 05:51:18
【问题描述】:
由于在 Redmine 应用程序中导入电子邮件,我正在尝试在 Openshift 上设置 cron 作业。因此,我准备了一个这样的详细脚本:
#!/bin/bash
rake RAILS_ENV=production -f ${OPENSHIFT_REPO_DIR}/Rakefile redmine:email:receive_imap host=imap.googlemail.com port=993 ssl=1 username=xxx@artistii.com password=yyy ...
在 ssh 连接上手动启动时运行没有问题。相反,当由 cron 运行时,找不到 rake。 做了一些调试,发现路径和登录shell不一样;即使我为 rake 使用了完整路径,发现的 ruby 也是 1.8 版(不是 1.9 版),并且每当我设置与 shell 相同的路径时,都找不到 libruby-1.9。
根据其他一些建议,我尝试添加以下行来代替设置自定义 PATH:
source /usr/bin/rhcsh
但仍然没有找到 rake。我也尝试使用 bundle exec。
在 Openshift 上为 cron 设置环境以便它可以像登录 shell 一样运行的正确方法是什么?
【问题讨论】:
-
在 shell 脚本中,尤其是在 cron 作业中,你永远不应该依赖
$PATH,你应该引用你绝对想要的rake。这是一种安全措施,否则执行特权代码太简单了。这样也不会有路径问题。