7

У меня есть этот крон

38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''

У меня есть этот cron под другим пользователем, поэтому я переключаю пользователей для развертывания

sudo su deploy
crontab -e

и я вижу свой cron, затем я веду журнал под пользователем root

tail -n300 -f /var/log/syslog

и я вижу свой хрон

Jul  5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

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

это Ubuntu 12.04 LTS

Может быть, я могу войти в более подробный список где-нибудь, чтобы увидеть ошибки

1 ответ1

14

CRON доставляет выходные данные приложений (stdout, stderr) по локальной почте. Ubuntu явно не имеет MTA (Mail Transfer Agent), установленного по умолчанию в эти дни. CRON печатает уведомление в системном журнале всякий раз, когда доставка не удалась:

Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

Вы можете установить MTA, например, postfix, только для внутреннего (локального) использования, например

aptitude install postfix

Во время установки вас спросят, какую конфигурацию по умолчанию использовать. Вы должны выбрать Local only конфигурацию.

После этого вы можете найти вывод приложений, запущенных CRON, используя

tail -f /var/mail/<your_username>

Конечно, вы также можете записать вывод журнала в выделенный файл журнала или направить / перенаправить вывод в файл, используя встроенную функцию оболочки ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .