【问题标题】:Crontab execute the command but the ruby script is not runningcrontab 执行命令但 ruby​​ 脚本没有运行
【发布时间】:2011-10-22 03:25:11
【问题描述】:

我为我的 ruby​​ 脚本设置了一个 crontab。

crontab -l
12 10 * * * /bin/bash  -c 'cd /home/user/path/ && /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby  -rubygems script.rb'

/bin/bash -c 'cd /home/user/path/ && /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -rubygems script.rb' 命令运行良好。

在 cron 中,cron 正在执行命令(我检查了系统日志:

sudo tail  /var/log/syslog
(user) CMD (/bin/bash  -c 'cd /home/user/path/ && /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby  -rubygems script.rb')

)

但脚本没有准确执行。我没有得到预期的结果。

问题的原因可能是什么?如果有人可以帮助我,将不胜感激。

【问题讨论】:

    标签: ruby ubuntu cron rvm crontab


    【解决方案1】:

    试试:

    12 10 * * * /bin/bash  -c 'source /home/user/.rvm/scripts/rvm && cd /home/user/path/ && /home/user/.rvm/bin/ruby-1.9.2-p136 -rubygems script.rb'
    

    【讨论】:

    • 好答案。当您从终端登录 bash 时,它会自动运行一些脚本来设置您的环境(通常包括“rvm”ruby 环境设置)。 “cron”只运行它在 cron 文件中找到的内容,不会自动运行任何环境设置脚本。
    • @Sayuj:这只是运行所有常见的 rvm 初始化内容,这些内容通常是通过登录 shell 获得的。
    • 好答案。这是关于该主题的完整博客文章:danielsz.posterous.com/how-to-run-rvm-scripts-as-cron-jobs
    • 这对我不起作用,我使用了12 10 * * * /bin/bash -c 'source /home/user/.rvm/scripts/rvm && cd /home/user/script/folder && /home/user/.rvm/rubies/ruby-2.3.3 script.rb' 我使用了which ruby 来获取 cron 中使用的 ruby​​ 路径
    • 当我使用 source /home/user/.rvm/environments/ruby-2.3.3 而不是 source /home/user/.rvm/scripts/rvm 时工作
    【解决方案2】:

    如果您在项目中使用 .rvmrc 文件为您的项目设置 ruby​​ 版本。然后你需要告诉 rvm 信任 ~/.rvmrc 中的 rvmrc 文件

    rvm_trust_rvmrcs_flag=1
    

    这将禁用提示,您的 cron 将不会挂起。

    【讨论】:

      【解决方案3】:

      尝试在终端中运行 env -i $SHELL --norc 然后运行 ​​ruby​​ 脚本。终端将与 cron 具有相同的环境

      【讨论】:

        猜你喜欢
        • 2013-12-20
        • 2011-09-21
        • 2011-10-03
        • 2015-11-03
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多