Crontab与Ruby脚本返回错误代码1

时间:2012-03-21 20:28:57

标签: ruby crontab ubuntu-11.10

我正在重写Ruby中的一些shell脚本,用于从我们的站点备份特定内容。我正在运行Ruby 1.8.7,并以root身份在本地运行脚本,它运行正常。

我刚刚尝试在Ubuntu 11.10上将脚本添加到cronttab。

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

当cron运行时,我在syslog中收到以下错误:

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

据说可以创建一个新的裸shell,模仿crontab运行的内容,这对我的脚本运行良好。

#!/usr/bin/env ruby

我已将该声明添加到我的脚本顶部,该声明在手动运行时未更改功能,也未解决crontab的问题。

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

我不确定还有什么可能是问题,但我认为它必须是Cron无法找到Ruby或其他性质的东西。我对此很陌生,所以我在这里走到了尽头。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我认为你需要在你的crontab

中应用ruby的路径

但我个人更喜欢只追踪要执行的ruby文件。

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

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

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

答案 1 :(得分:0)

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

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

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

从现在开始,一切都很顺利。

感谢您的帮助。