Ведение журнала вывода strontr crontab в файл

Например, я могу log stderr одного сценария таким образом:

 * * * * * run_script.sh > /var/log.txt 2>&1 

Но я хочу stderr всех скриптов в моем crontab. Я могу добавить > /var/log.txt 2>&1 ко всем скриптам, но это не хорошо, если у меня есть сотни скриптов в cron . Есть ли другой, более простой способ сделать это?

  Any output produced by a command is sent to the user specified in the MAILTO environment variable as set in the crontab(5) file or, if no MAILTO variable is set (or if this is an at(1) or batch(1) job), to the job's owner. If a command produces no output or if the MAILTO environment variable is set to the empty string, no mail will be sent. 

Поскольку он использует местную почту, вам действительно не нужно ничего настраивать, или, может быть, просто установите mailx, если он еще не существует. Cron отправит вам результат, вы сможете сохранить почту в файле и сделать много вещей оттуда. Попытка изменить способ работы cron, чтобы удовлетворить ваши потребности, – это не путь. Если вы так не считаете, просто патч и re-buil cron, назовите его my_cron и используйте его вместо cron. И будьте готовы в конечном итоге сохранить свой my_cron в актуальном состоянии и часто его перестраивать.

Добавьте это в начале всех ваших скриптов, чтобы регистрировать все и останавливаться при первой ошибке

 exec 2>&1 > /var/log/YOUR_LOG_FILE set -e 

В crontab вы можете установить MAILTO, чтобы указать на псевдоним почты, который запускает скрипт. Этот скрипт будет принимать почтовое сообщение, отделять заголовки и другие загвоздки и записывать остаток с помощью регистратора. Поскольку весь вывод cron-скрипта отправляется по адресу, указанному MAILTO, вы должны захватывать все.

Пример: в crontab

 MAILTO=myalias 

В / etc / mail / aliases (при условии, что вы используете sendmail)

 myalias:"|/usr/local/bin/my-processing-script.sh" 

и скрипт вычеркивает заголовки писем и обрабатывает выход cron.