Перенаправление вывода задания cron

У меня есть следующая запись в crontab:

0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb 2>&1 > ./log/my_log.log'

В результате я получаю вывод ./script/my_script.rb в ./log/my_log.log. Такое поведение желательно. Любопытно, что я также получаю вывод в своей местной почте. Мне интересно, как вывод моего script записывается по почте. Поскольку я перенаправляю вывод в файл журнала, я бы ожидал, что мое задание cron не будет выводиться, и, таким образом, я не получил бы почту, когда будет выполняться задание cron. Может ли кто-нибудь пролить свет на то, как почта может получить вывод ./script/my_script.rb?

Ответы

Ответ 1

Ваш порядок перенаправления неверен. Stderr не перенаправляется в файл, а отправляется на stdout. Это то, что вы должны получать в своей почте.

Исправить перенаправление, изменив задание cron на:

0 5 * * * /bin/bash -l -c
'export RAILS_ENV=my_env;
cd /my_folder;
./script/my_script.rb > ./log/my_log.log 2>&1'

Ответ 2

Попробуйте заменить 2>&1 на > ./log/my_log.log.

Ответ 3

Судя по этому ответу, вам просто нужно переключить порядок перенаправления:

0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb > ./log/my_log.log 2>&1'