Отключить электронные письма cron, если нет ошибок?

Как я могу получать электронные письма от cron, если есть ошибки?

В подавляющем большинстве случаев задачи будут работать очень хорошо – и я действительно не забочусь о выходе.

Это только в редких случаях неудачи, которые я хочу / должен знать.

У меня есть procmail, но я не уверен, что то, что я описываю, можно управлять извне в cron «правильно».

4 Solutions collect form web for “Отключить электронные письма cron, если нет ошибок?”

Поскольку вы не заботитесь о выходе, вы можете перенаправить STDOUT задания на /dev/null и позволить STDERR отправлять по почте (используя переменную среды MAILTO ).

Так, например:

 ... ... MAILTO=foobar@example.com ... ... * * * * * /my/script.sh >/dev/null 

отправит почту, когда есть выход только на STDERR (с помощью STDERR), и отменит STDOUT.

Это, конечно, предполагает, что когда программа написана на STDERR, не удалось; это может быть не всегда так. Если у вас есть контроль над программой, вы можете сделать это. Для любого сложного случая вы должны написать какую-либо оболочку, которая запускает команду (ы) и отправляет почту соответственно. И поместите обертку в качестве задания cron .

chronic команда из moreutils управляет командой тихо, если она не сработает.

Цитата из его руководства:

хронический запускает команду и устанавливает стандартную и стандартную ошибку, чтобы отображаться только в случае сбоя команды (выходит из нуля или сбой). Если команда выполнена успешно, любой посторонний выход будет скрыт.

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

Как я могу получать электронные письма от cron, если есть ошибки?

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

Чтобы использовать cronic, загрузите сценарий в подходящее место, например /usr/local/bin . Ваши записи crontab должны иметь префикс пути к скрипту (например, /usr/local/bin/cronic ) или просто cronic , если ваш PATH установлен правильно.

Обратите внимание, что «ошибки» являются неопределенным термином в вашем вопросе и требуют тщательного определения. Для того, чтобы cronic был полезен, вы должны обеспечить, чтобы задания, которые вы завершаете с ошибками отчета об ошибках, одним из способов определения условия ошибки. Неявные методы отчетности, такие как написание текстовых строк в STDOUT , потребуют дальнейшего рассмотрения, чтобы сделать это совместимым с cronic или другим механизмом отчетности cron.

Имеются другие обертки, связанные с сайтом cronic:

  • зашикать
  • Cronwrap

Вероятно, я не думал об этом полностью, но

 * * * * * yourthing.sh >/tmp/yourthing.log && rm -f /tmp/yourthing.log; cat /tmp/yourthing.log 2>/dev/null 

в обычных случаях перенаправлял бы все во временный файл (вы, вероятно, захотите использовать mktemp для получения уникального имени файла), удалите его, если файл был успешным, а затем снова оставьте содержимое, если они все еще существуют (т.е. sh выйдет с условием ошибки), который будет поднят почтовой программой cron.

Если память обслуживается, cron уже ничего не отправляет, если не было выхода, поэтому, если файл журнала пуст или не существует, ничего не происходит. (Мы перенаправляем сообщение об ошибке.)

  • Как программно добавить новый файл crontab без замены предыдущего
  • Есть ли веская причина запретить пользователям использовать cron / at?
  • CRON, которая убивает процесс, начатый предыдущим CRON
  • Каков наиболее эффективный способ регистрации ошибок сценария оболочки crontab с ошибкой?
  • Ведение журнала вывода strontr crontab в файл
  • Истекает срок действия пароля для Linux и cron
  • Какой самый простой способ настроить двухчасовую тревогу?
  • cron script: dovecot: непризнанная услуга
  • cron и отправлять почту неверному пользователю
  • Cronjob работает в часе (не ожидалось)
  • Почему мои пользовательские файлы crontab неизменяемы и не выполняются даже после изменения атрибута на mutable?
  • Linux и Unix - лучшая ОС в мире.