【问题标题】:Rake command works in terminal but not in crontabRake 命令在终端中有效,但在 crontab 中无效
【发布时间】:2019-05-07 05:24:57
【问题描述】:

我尝试执行这条 crontab 行:

*/1 * * * * /bin/bash -l -c 'source $HOME/.bash_profile && cd /home/uservm/RubymineProjects/ && RAILS_ENV=development bundle exec rake accr:generate_pdf'

如果我在终端中执行cd /home/uservm/RubymineProjects/ && RAILS_ENV=development bundle exec rake accr:generate_pdf,它可以完美运行,但在 cron 中却不行

【问题讨论】:

    标签: ruby-on-rails linux shell cron


    【解决方案1】:

    这是因为 crontab 在与普通用户不同的环境中运行(当您在终端中键入时)。所以你需要指定你的 ruby​​ 安装路径:

    运行:

    $ which ruby
    

    复制您的 ruby​​ 路径,然后将您的 crontab 更改为

    */1 * * * * /bin/bash -l -c 'source $HOME/.bash_profile && cd /home/uservm/RubymineProjects/ && /path/to/ruby RAILS_ENV=development bundle exec rake accr:generate_pdf
    

    如果这没有解决,那么运行 $ which bundle 并用这个包路径替换 ruby​​ 路径,看看它是否有效。

    这应该可以解决您的问题。更多信息:See this

    【讨论】:

    • 我这样修改过,但还是不行:*/1 * * * * /bin/bash -l -c 'source $HOME/.bash_profile && cd /home/uservm/RubymineProjects && / usr/local/rvm/rubies/ruby-2.3.1/bin/ruby RAILS_ENV=development /usr/local/rvm/gems/ruby-2.3.1/bin/bundle exec rake accr:generate_pdf'
    • 对不起,有一个小错误,你需要在 ruby​​ 之前使用 RAILS_ENV。试试这个source $HOME/.bash_profile && cd /home/uservm/RubymineProjects && RAILS_ENV=development /usr/local/rvm/rubies/ruby-2.3.1/bin/ruby bundle exec rake accr:generate_pdf
    • 或者这个:source $HOME/.bash_profile && cd /home/uservm/RubymineProjects && RAILS_ENV=development /usr/local/rvm/rubies/ruby-2.3.1/bin/ruby /usr/local/rvm/gems/ruby-2.3.1/bin/bundle exec rake accr:generate_pdf
    • 等待等待等待!您是否尝试每 1 秒运行一次作业? */1 * * * * 。如果是这样,那么你不能。 Cronjobs 在几分钟内开始工作,所以你应该给的最短时间是 1 分钟。
    • 不,我尝试每分钟执行一次 :)
    猜你喜欢
    • 1970-01-01
    • 2021-07-18
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多