[英]Problem with running Ruby with Cron
我的红宝石文件就是这样。
`mkdir #{HOST} -p`
它可以正常工作: ruby mycode.rb
但是,在一个cron工作中
0 * * * *红宝石〜/ backup.rb >> backup.log
它将是-p
文件夹。 为什么?
任何人都使用cron作业遇到的#1问题是,出于安全原因,通常cron作业以最小的$PATH
运行。 因此, 可能是您的cron作业运行的路径与从shell运行脚本时的路径不同,这意味着在cron作业中可能会调用不同的mkdir
逗号,这将以不同的方式解释其参数。
通常 ,第一个filename参数停止选项处理,此后出现的所有内容都将被视为文件名。 因此,由于#{HOST}
是文件名,此后的所有内容也将被视为文件名,这意味着该调用将被解释为“建立两个目录,一个名为#{HOST}
,另一个名为-p
”。例如,您查看mkdir
的规范,在文件名后传递选项完全是非法的。
另一种可能性是由于某种原因,在cron下运行时, #{HOST}
将为空。 然后,整个通话扩展到mkdir -p
,而这又取决于你的实现mkdir
可能被解释为“创建一个目录中名为-p
”。
我不太清楚为什么您以错误的顺序传递选项和操作数,而不是mkdir -p #{HOST}
。 这也是我不明白为什么你使用的shell 可言 ,而不是仅仅FileUtils.mkdir_p(HOST)
我看到的另一个问题是#! 使用/ usr / bin / env时,脚本行失败。 例如:
#!/usr/bin/env ruby
在cron下运行时找不到红宝石。 你必须用
#!/usr/local/bin/ruby
或您平台上的同等产品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.