2013-06-30 2 views
0

Борьба с заданиями cron. Ubuntu 11.10 на сервере.Всякий раз, когда/cron не работает, но отлично вручную

До недавнего времени всякий раз, когда работа cron выполнялась успешно несколько раз в день; то из-за другой проблемы мне пришлось удалить RVM с сервера и вернуться к ruby ​​1.9.3, установленному без RVM (я уверен, что это как-то связано с этим)

В моем приложении нет файла .rvmrc

Теперь, хрон рабочих мест, так или иначе неудачу, как я могу видеть из Syslog:

Jun 30 08:03:01 ip-10-251-30-96 CRON[18706]: (ubuntu) CMD (/bin/bash -l -c 'cd /var/www/my_app/app/releases/201300629090954 && script/rails runner -e production '\''User.remind_non_confirmed_users'\''') 
Jun 30 08:03:01 ip-10-251-30-96 CRON[18705]: (CRON) error (grandchild #18706 failed with exit status 127) 
Jun 30 08:03:01 ip-10-251-30-96 CRON[18705]: (CRON) info (No MTA installed, discarding output) 

Если я запускаю эту команду вручную (с окр -/бен/Баш -l -c «...») он работает нормально ..

Я собираюсь добавить «set: output, 'tmp/when.log» в любое время, чтобы увидеть, что происходит g, но я подозреваю, что это проблема с рубиновой версией/путем или чем-то еще.

Любая идея, как я мог диагностировать/исправить это правильно ??

это мой хрон/всякий раз, когда работа:

3 8 * * * /bin/bash -l -c 'cd /var/www/my_app/app/releases/20130629090954 && script/rails runner -e production '\''User.remind_non_confirmed_users'\''' 

большое спасибо

+0

Вы выполняете задание cron вручную в той же среде, в той же базе данных? –

+0

привет, да, я запускаю команду на ssh на сервер, тот же код/​​тот же db – bobomoreno

+0

вы хотели использовать: '/ tmp/when.log'? – pguardiario

ответ

0

Чтобы помочь диагностировать, что происходит, я обычно перехватывать вывод хрон в отдельный файл журнала. Вероятно, есть ошибка, которая просто не записывается нигде.

@hourly bash -lc 'cd /path/to/app; RAILS_ENV=production bundle exec rake remind_non_confirmed_users' >> /path/to/app/log/tasks.log 

Кроме того, я предпочитаю создавать рейк-задачи для заданий cron, а не для бегунов. Немного легче вызвать из командной строки, чем бегунов, для меня, по крайней мере.

+0

Странно, что файлы журнала не создаются; но пользователь «ubuntu» имеет права на запись туда, где я пытаюсь их написать. (/ tmp) – bobomoreno

+0

Ну, вы просто пытаетесь понять, почему задача, которую он терпит неудачу, не так ли? Может быть, похлопать свой выходной журнал где-то легко, как $ HOME, так что вы можете получить рубинский вопрос. –

0

Я все еще не уверен, что происходит, работает. Что бы ни было: «set: output» должен был создать файлы журналов, но он этого не сделал, но все еще не удалось выполнить задания (и права на запись были для журнала файлы).

Я так устал, что переработал решение без использования скрипта/бегуна, вместо того, чтобы cron просто вызывал URL-адрес, который затем заботится о делах как отложенной работе. Для нашей конкретной ситуации это имеет ряд дополнительных преимуществ, хотя я знаю, что это не идеально для многих.

спасибо за предложения

Смежные вопросы