从cron执行ruby脚本
我的脚本使用
mysql,tiny_tds,fileutils和net / ftp.在ruby 1.9.3上运行.当我从文件夹内部运行它时,它工作得很好.
但是,当我将它添加到cron选项卡时,tiny_tds经常失败.我不知道是否有任何其他宝石失败,因为我无法通过此错误:
我尝试从crontab使用的同一个shell执行它,我得到了那个错误. 整个脚本只有一个文件. 我是ruby的新手,所以我的知识在以正确的方式设置环境方面是有限的. 在我的文件的头部 #!/usr/bin/ruby require "mysql" require "fileutils"; require "tiny_tds" require "net/ftp" 简而言之,我从mysql获取了一个Jobs列表,将其与MsSQL进行比较,将FTP文件与之相比较,并在作业完成时再次更新mysql. 我需要从cron运行它. 经过一段时间的研究,我试图将宝石设置为全局,但是,我认为这可能没有用. 在此先感谢您的帮助! 解决方法
这是因为当crond执行代码时,命令行中的环境变量不会被设置.通常的嫌疑人是PATH,LD_LIBRARY_PATH和登录时设置的别名.
你可以看看crond做了什么:使用crontab -e * * * * * set > /tmp/setvals 创建上面的条目.让它运行一段时间.返回到crontab -e并删除该新条目. 将/ tmp / setvals中的内容与shell在命令行上发出set命令时给出的内容进行比较.然后,您可以采取措施修改cron作业环境的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |