【问题标题】:shell script to execute rails runner via cron with rvm使用 rvm 通过 cron 执行 rails runner 的 shell 脚本
【发布时间】:2012-03-12 05:09:34
【问题描述】:

crontab 我有:

0,30 * * * * sh /path/to/my/script.sh

在我的script.sh 我有:

#!/bin/bash
rvm use 1.9.2@r321
cd /path/to/my/proyect
rails runner rails_script.rb

但它不会在1.9.2 中加载rvm,它停留在系统设置上,在我的情况下是1.8.7

我应该怎么做才能确保跑步者在 1.9.2 中的 rvm 下使用 gemset r321 运行?

【问题讨论】:

    标签: bash cron rvm runner


    【解决方案1】:

    至少有 4 种方法可以让 cron 与 RVM 一起工作:https://rvm.io/integration/cron/

    我个人更喜欢2. Loading RVM environment files in shell scripts.

    【讨论】:

    • 好吧,当我运行 $ rvm env --path -- 1.9.2@r321 时它会返回 /home/ubuntu/.rvm/environments/ruby-1.9.2-p290@r321 然后我编辑我的脚本并添加 source /home/ubuntu/.rvm/environments/ruby-1.9.2-p290@r321 但是当我运行脚本时它说:source: not found,知道为什么吗?
    • 是的,文件ruby-1.9.2-p290@r321位于/home/ubuntu/.rvm/environments/
    • 是同一台机器吗?将该行复制粘贴到您的终端并检查它是否更改rvm current
    • 是的,它在同一台机器上,现在如果我尝试使用sh /path/to/script.sh 运行脚本会给我错误,但如果我使用./path/to/script.sh 运行它会完美运行。这是怎么回事?
    • sh 是有限的 shell,用 bash/zsh 运行它
    【解决方案2】:

    我认为您的问题是:RVM 仅在您的用户 shell 中工作正确。之后记得 安装 rvm 你必须写一些类似的东西。

    '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

    在您的 .zshrc 或 .bashrc 中

    告诉 cron 你使用 rvm 的用户是因为 rvm 必须作为函数加载 并且对于未将 rvm 作为功能加载的用户,它将无法正常工作,并且会自动使用系统 ruby​​ 版本。 示例:

    0,30 * * * * 用户名 bash /path/to/my/script.sh

    或者,您可以将 rvm 安装为多用户显示:enter link description here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2014-09-06
      • 2014-10-06
      • 2020-05-31
      • 1970-01-01
      • 2012-08-09
      相关资源
      最近更新 更多