带有Ruby脚本的Crontab返回错误代码1
我正在用Ruby重写一些shell脚本,这些脚本将用于从我们的站点备份特定内容。我运行的是Ruby 1.8.7,脚本以root用户身份在本地运行,运行良好 我刚刚尝试将脚本添加到Ubuntu11.10上的CrontLab带有Ruby脚本的Crontab返回错误代码1,ruby,crontab,ubuntu-11.10,Ruby,Crontab,Ubuntu 11.10,我正在用Ruby重写一些shell脚本,这些脚本将用于从我们的站点备份特定内容。我运行的是Ruby 1.8.7,脚本以root用户身份在本地运行,运行良好 我刚刚尝试将脚本添加到Ubuntu11.10上的CrontLab */5 * * * * ruby /root/code/backup_images.rb local 当cron运行时,我在系统日志中收到以下错误: Mar 21 16:15:01 ubuntu CRON[4942]: (root) CMD (ruby /root/code/
*/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中应用ruby的路径 但就我个人而言,我更倾向于选择要执行的ruby文件的路径
*/5 * * * * /root/code/backup_images.rb local
然后追加
#!/usr/bin/env ruby
到backup_images.rb的顶部
您还需要使用
chmod+x我认为错误在于您需要在crontab中将路径应用于ruby 但就我个人而言,我更倾向于选择要执行的ruby文件的路径
*/5 * * * * /root/code/backup_images.rb local
然后追加
#!/usr/bin/env ruby
到backup_images.rb的顶部
您还需要使用
chmod+x因此在@tomodachi的帮助下,我更进一步,明确地写出了下面的crontab行,它现在可以工作了
*/15 * * * * cd /root/code/ && ./backup_images.rb local > /root/code/log/script.log
因此,基本上我试图从bash shell执行命令,但它找不到脚本。因此,我显式地进入direct,然后执行备份脚本
从这一点开始,一切都很顺利
感谢您的帮助。因此,在@tomodachi的帮助下,我更进一步,明确地写出了下面的crontab行,它现在可以工作了
*/15 * * * * cd /root/code/ && ./backup_images.rb local > /root/code/log/script.log
因此,基本上我试图从bash shell执行命令,但它找不到脚本。因此,我显式地进入direct,然后执行备份脚本
从这一点开始,一切都很顺利
感谢您的帮助。我没有执行权限,文件中的路径不正确。当前调用现在是*/5****/root/code/backup_images.rb local,响应相同。以状态1退出。我没有执行权限,文件中的路径不正确。当前调用现在是*/5****/root/code/backup_images.rb local,响应相同。以状态1退出