我正在尝试设置一个cron作业,每15分钟运行一次生活在我的ror网站数据库文件夹内的ruby脚本。该生产线我有我的crontab是这样的:Cron作业无法访问数据库文件我想更新
0,15,30,45 * * * * /bin/bash -l -c 'ruby /Users/arpitadey/rails_projects/sample_app/db/poller.rb'
poller.rb应该远程收集一些数据,然后更新称为sites.db新数据的数据库文件。 poller.rb和sites.db在同一个文件夹中 - 所以当我从终端运行poller.rb时,它会发现sites.db并更新它就好了。但是当poller.rb作为cron作业运行时,我收到邮件说没有这样的表格,站点。从下面的行poller.rb此错误的问题:
currentEnergy = db.query("SELECT energydata FROM sites")
此前线poller.rb,
db=SQLite3::Database.new("sites.db")
问题没有错误。我刚刚了解到cron的工作(因为昨天你们中的一些人很友好地指向他们),我想也许因为我对unix的一般事情(或者一般的计算机科学应该说)没有背景知识,我不明白关于这个问题的很多帖子。我是一名低级机械工程师,无法理解涉及unix背景知识的答案。我只需要知道如何改变我的crontab,以便cron知道在哪里可以找到我的数据库文件,以便poller.rb能够更新它。非常感谢!
这就是我改变我的crontab到最后:0,15,30,45 * * * */bin/bash -l -c'。 $ HOME/.profile文件; ruby /Users/arpitadey/rails_projects/sample_app/db/poller.rb'。但它是说它不知道/Users/arpitadey/.profile的位置。所以很明显我很被误解。 – pitachip 2011-05-12 21:50:49
我会认为你没有误解,但我不清楚:)。可能没有.profile。我会创建一个shell脚本,其中包含启动poller.r脚本的变量。比cron作业启动该shell脚本。 – 2011-05-12 22:19:53
这是你的意思吗?0,15,30,45 * * * */bin/bash -l -c'cd/Users/arpitadey/rails_projects/sample_app; ruby /Users/arpitadey/rails_projects/sample_app/db/poller.rb'它仍然无法找到我的数据库,sites.db :( – pitachip 2011-05-12 23:42:50