Задание Cron не может получить доступ к файлу базы данных, который я хочу обновить - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь настроить работу cron, чтобы каждые 15 минут запускать скрипт ruby, который находится в папке базы данных моего сайта ror.Строка в моем crontab выглядит следующим образом:

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 мог его обновить.Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Сделайте это в вашем скрипте:

Dir.chdir(File.expand_path(File.dirname(__FILE__)))
0 голосов
/ 13 мая 2011

Cron не выполняется с вашей оболочкой - поэтому необходимо установить любые переменные окружения. Вы можете написать сценарий оболочки, который выполняет настройку, а затем запускает сценарий ruby.

Пусть скрипт будет выглядеть примерно так:

. $ HOME / .profile

ruby ​​/Users/arpitadey/rails_projects/sample_app/db/poller.r

И просто поручите заданию cron выполнить этот скрипт.

Хорошо, возможно, не существует сценария .profile, поэтому создайте файл в вашем домашнем каталоге со всеми переменными окружения.

Назовите это poller.sh

введите "env> poller.sh"

редактировать poller.sh

Сделать первую строку #! / Bin / sh

для каждой следующей строки поместите экспорт в начало строки, чтобы она выглядела как

#!/bin/sh
export GRAILS_HOME=/home/SillyUser/grails/
export PATH=/blah/blah/blah
...

At the bottom of the file:
ruby /Users/arpitadey/rails_projects/sample_app/db/poller.r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...