内容简介:翻译自:https://stackoverflow.com/questions/15962573/usr-bin-env-ruby-is-not-found-in-cron
脚本,hello.rb:
#!/usr/bin/env ruby puts 'hello'
它在命令行运行正常:
# /usr/local/src/hello/hello.rb hello
但是,如果我把它放在cron中:
* * * * * /usr/local/src/hello/hello.rb >> /usr/local/src/hello/hello.log 2>&1
日志文件中有错误:
/usr/bin/env: ruby: No such file or directory /usr/bin/env: ruby: No such file or directory ... /usr/bin/env: ruby: No such file or directory
/usr/bin/env ruby在命令行运行正常:
# /usr/bin/env ruby -v ruby 1.8.7 (2012-10-12 patchlevel 371) [i686-linux]
如何修复cron的env错误?
问题是环境不是你所期望的.
您没有说cron是以用户身份运行还是以root身份运行,但在任何一种情况下,您都可以通过添加另一个cron条目来测试以查看环境的样子:
* * * * * /usr/bin/env > /path/to/your/home/directory/env.txt
让它运行一次,然后将其拉出来,然后查看文件.
而不是使用/usr/bin/env尝试查找运行代码的Ruby,明确定义Ruby:
* * * * * /path/to/the/ruby/you/want /usr/local/src/hello/hello.rb >> /usr/local/src/hello/hello.log 2>&1
您可以使用以下方法找出您想要的Ruby:
which ruby
或者,而不是依赖于#usr / bin / env#!一行,在那里定义你的Ruby.
在使用RVM或rbenv之类的东西以及在 Ruby 版本之间切换时,在代码中使用/usr/bin/env ruby是一种方便.当您将某些内容放入“生产”时,无论是在您自己的帐户中的计算机上,还是在以root身份运行的生产主机上,这都不是一个好的选择.
如果您使用的是 Linux 或Mac OS,请尝试使用man 5 crontab获取更多信息.此外,“ Where can I set environment variables that crontab will use? ”应该非常有用.
翻译自:https://stackoverflow.com/questions/15962573/usr-bin-env-ruby-is-not-found-in-cron
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 放弃 OpenStack?恐怕还不到时候
- 意想不到的MySQL复制延迟原因
- 盘点一下不到100行的给力代码
- Xcode 静态链接库找不到的问题
- 裁员过后,找不到工作的程序员们
- 不到 100 行 Python 代码徐峥变葛优
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Python
Paul Barry / O'Reilly Media / 2010-11-30 / USD 49.99
Are you keen to add Python to your programming skills? Learn quickly and have some fun at the same time with Head First Python. This book takes you beyond typical how-to manuals with engaging images, ......一起来看看 《Head First Python》 这本书的介绍吧!