带Ruby脚本的Crontab返回错误代码1

问题描述:

我正在用Ruby重写一些shell脚本,这些脚本将用于从我们的站点备份特定内容。我正在运行Ruby 1.8.7,并且以root身份在本地运行脚本,并且工作正常。带Ruby脚本的Crontab返回错误代码1

我刚刚试图将脚本添加到Ubuntu 11.10上的cronttab。

*/5 * * * * ruby /root/code/backup_images.rb local 

当cron会收到以下错误在系统日志:

Mar 21 16:15:01 ubuntu CRON[4942]: (root) CMD (ruby /root/code/backup_images.rb local) 
Mar 21 16:15:02 ubuntu CRON[4941]: (CRON) error (grandchild #4942 failed with exit status 1) 

我尝试了以下解决方案,但无济于事:

env -i $SHELL --norc 

据称创建模仿crontab运行的新裸机,这对我的脚本来说工作正常。

#!/usr/bin/env ruby 

我已经加入该项声明我的脚本的顶部,其手动运行时,它并没有改变的功能,也没有解决与crontab的问题。

我甚至试图将调用的结果输出到一个文件,但只创建一个没有任何文件的新文件。

我不确定还有什么可能是问题,但我认为它必须与Cron无法找到Ruby或某种性质的东西。我对此很新,所以我在这里遇到了一个死胡同。

在此先感谢!

我相信错的是你需要申请的路径在crontab

红宝石但我个人只是宁愿路径红宝石文件执行。

*/5 * * * * /root/code/backup_images.rb当地

然后追加
#!的/ usr/bin中/红宝石
到backup_images.rb顶部

你还需要使用可执行文件 chmod + x

+0

嗯,我没有执行权限,我的路径在文件中不正确。当前的调用现在是'*/5 * * * * /root/code/backup_images.rb local',响应是相同的。以状态1退出 – Nick 2012-03-22 13:47:55

所以在@tomodachi的帮助下,我更进了一步,明确写出了以下crontab行,现在它可以工作。

*/15 * * * * cd /root/code/ && ./backup_images.rb local > /root/code/log/script.log 

所以基本上我试图从bash shell执行命令,它没有找到脚本。所以我明确地进入了直接,然后执行备份脚本。

从这一点来看,一切正常。

感谢您的帮助。