【问题标题】:Command works on bash but not on cron命令适用于 bash 但不适用于 cron
【发布时间】:2026-01-31 03:50:01
【问题描述】:

我正在使用 rails 运行 docker 映像(已安装 cron)。一切都运行良好,除了我试图添加一个作为命令工作的 cron 作业,但在添加到 crontab 时给我一个错误。

下面的命令是:

0,2 * * * * /bin/bash -l -c 'cd /app && bin/rails runner -e production '\''Statistic.create_statistic'\'' >> log/cron_log.log 2>> log/cron_error_log.log'

我让它每 2 分钟运行一次,为了清楚起见,我在这个 sn-p 中省略了它。

当我只跑步时:

/bin/bash -l -c 'cd /app && bin/rails runner -e production '\''Statistic.create_statistic'\'' >> log/cron_log.log 2>> log/cron_error_log.log'

有效

我得到的错误是:

   /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- bundler/setup (LoadError)
    from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in     `require'
    from /app/config/boot.rb:3:in `<top (required)>'
    from bin/rails:7:in `require_relative'
    from bin/rails:7:in `<main>'

我正在使用无论何时 gem,它似乎正在正确地完成它的工作。我做错了什么?

【问题讨论】:

    标签: ruby-on-rails bash docker cron whenever


    【解决方案1】:

    我对 ruby​​ 不够熟悉,无法给出正确的答案,但听起来您的 bash shell 登录中设置了某种环境变量,但在 cron 执行期间没有设置。

    您可以在 cronjob 上方设置环境变量,例如

    PATH="/path/to/gems;$PATH"
    0,2 * * * * /bin/bash -l -c ' ..... '
    

    【讨论】:

      最近更新 更多