加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Crontab没有运行ruby脚本

发布时间:2020-12-16 19:30:15 所属栏目:百科 来源:网络整理
导读:下面的crontab -l似乎没有运行.手动运行的脚本运行正常.这是我看到的错误 Dec 3 20:12:01 dahlia /USR/SBIN/CRON[13912]: (gigawatt) CMD (/bin/sh -c "(export PATH=/usr/bin:/bin; /home/gigawatt/drbronnersbot/drbronnersbot.rb)")Dec 3 20:12:01 dahlia
下面的crontab -l似乎没有运行.手动运行的脚本运行正常.这是我看到的错误
Dec  3 20:12:01 dahlia /USR/SBIN/CRON[13912]: (gigawatt) CMD (/bin/sh -c "(export   PATH=/usr/bin:/bin; /home/gigawatt/drbronnersbot/drbronnersbot.rb)")
Dec  3 20:12:01 dahlia /USR/SBIN/CRON[13910]: (CRON) error (grandchild #13912 failed with exit status 1)

这是crontab:

* * * * * /bin/sh -c "(export PATH=/usr/bin:/bin; /home/gigawatt/drbronnersbot/drbronnersbot.rb)"

权限是完全打开的,它的可执行文件,我把env路径放在文件的开头,仍然没有骰子.

解决方法

编辑:我刚刚注意到用户回答了他自己的帖子,但我会留下这个,以防万一有人在这里遇到类似的问题.我发现它对一些人有帮助.

我遇到过这个问题,发现这是Ruby脚本的解决方案.

Ruby需要在特定环境中执行. RVM通过为特定版本的ruby提供ruby环境文件来处理这个问题,该文件设置了所有必需的环境变量.例如,如果你有ruby 1.9.3补丁448,你可以查看源代码的环境文件:

cat /usr/local/rvm/environments/ruby-1.9.3-p484

export PATH="/usr/local/rvm/gems/ruby-1.9.3-p484/bin:/usr/local/rvm/gems/ruby-1.9.3-p484@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p484/bin:$PATH"
export GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p484'
export GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p484:/usr/local/rvm/gems/ruby-1.9.3-p484@global'
export IRBRC='/usr/local/rvm/rubies/ruby-1.9.3-p484/.irbrc'
unset MAGLEV_HOME
unset RBXOPT

(注意:我的rvm安装在/usr/local / ..但是你的安装可能在其他地方.使用哪个ruby来确定你的ruby的安装位置)

在这里你可以看到它正在设置PATH和一些其他重要的环境变量.当你键入rvm使用ruby-1.9.3-p448时,rvm实际上在后台获取此文件.

Cron执行是非交互式会话,这意味着他们没有在会话前登录的“实时”用户.当您手动执行并运行交互式会话时,所有这些都会为您完成,但对于非交互式会话,它不知道shell是什么或在何处查找环境路径.也许有更多知识的人可以提供技术解释.

无论如何,要解决这个问题,请将其添加到crontab的顶部:

SHELL=/bin/bash
BASH_ENV=/home/gigawatt/.bashrc

* * * * * /home/gigawatt/.rvm/rubies/ruby-2.0.0-p247/bin/ruby /home/gigawatt/drbronnersbot/drbronnersbot.rb

这告诉非交互式cron用户使用哪个shell,然后告诉它来源.bashrc文件. .bashrc文件中有什么?好问题,你应该添加这一行 –

source /usr/local/rvm/environments/ruby-1.9.3-p484

(再次用你自己的ruby路径替换)
基本上,您手动获取rvm为您提供的环境文件.这是让cron使用特定gem环境或gemset的一种方式.

它应该适用于这两个变化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读