我的ruby文件是这样的。

`mkdir #{HOST} -p`

它的工作原理是:ruby mycode.rb
但在一份亲信工作中
0****ruby~/backup.rb>>备份.log
它将是一个-p文件夹。为什么?

最佳答案

任何人在使用cron作业时遇到的问题是,出于安全原因,cron作业通常只运行一个极小的$PATH。因此,可能是cron作业的运行路径不同于从shell运行脚本时的路径,这意味着在cron作业中可能会调用不同的comman,这会以不同的方式解释其参数。
通常,第一个filename参数停止选项处理,之后的所有内容都将被视为文件名。因此,由于mkdir是一个文件名,此后的所有内容都将被视为一个文件名,这意味着调用将被解释为“生成两个目录,一个名为#{HOST},另一个名为#{HOST}”,如果您查看-p的规范,则在文件名之后传递选项是非法的。
另一种可能性是,由于某种原因,在cron下运行时mkdir将为空。然后,整个调用扩展到#{HOST},这再次取决于mkdir -p的实现,可能被解释为“创建一个名为mkdir的目录”。
我不太清楚为什么要以错误的顺序传递选项和操作数,而不是-p。我也不清楚为什么你要使用shell,而不仅仅是mkdir -p #{HOST}

关于ruby - 用Cron运行Ruby的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2649585/

10-11 19:58
查看更多