Всякий раз, когда задания / cron не выполняются, но все в порядке вручную
Борьба с заданиями cron. Ubuntu 11.10 на сервере.
До недавнего времени когда-либо успешно выполнялись задания cron несколько раз в день; затем из-за другой проблемы мне пришлось удалить RVM с сервера и вернуться к ruby 1.9.3, установленному без RVM (я уверен, что это как-то связано с этим)
В моем приложении нет файла.rvmrc
Теперь задания cron почему-то не работают, как я вижу из системного журнала:
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)
Если я запускаю эту команду вручную (с помощью env - /bin/bash -l -c '...'), она работает нормально..
Я собираюсь добавить "set:output, 'tmp/ ever.log'" в любое время, чтобы увидеть, что происходит, но я подозреваю, что это проблема с версией / путем ruby или чем-то еще.
Любая идея, как я мог бы диагностировать / исправить это правильно?
это мой cron/ всякий раз, когда работа:
3 8 * * * /bin/bash -l -c 'cd /var/www/my_app/app/releases/20130629090954 && script/rails runner -e production '\''User.remind_non_confirmed_users'\'''
большое спасибо
2 ответа
Я до сих пор не уверен, что происходило, при запуске чего бы то ни было с 'set: output' должны были быть созданы файлы журнала, но этого не произошло, но задания все еще не выполняются (и для файлов журнала были разрешения на запись).
Я был настолько сыт по горло, что перепроектировал решение без использования скрипта / бегуна, вместо того, чтобы cron просто вызывал URL-адрес, который затем заботился о вещах как о отложенной работе. Для нашей конкретной ситуации это имеет ряд дополнительных преимуществ, хотя я знаю, что для многих это не идеально.
спасибо за предложения
Чтобы помочь диагностировать происходящее, я обычно записываю вывод cron в отдельный файл журнала. Вероятно, есть ошибка, которая просто нигде не записывается.
@hourly bash -lc 'cd /path/to/app; RAILS_ENV=production bundle exec rake remind_non_confirmed_users' >> /path/to/app/log/tasks.log
Кроме того, я предпочитаю создавать грабли для задач cron, а не для бегунов Немного легче вызвать через командную строку, чем бегуны, по крайней мере для меня.