Отключить электронные письма 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 в / tmp?
  • Как создать CronJob для запуска команд при перезагрузке?
  • Cron работает, но crontab -l говорит, что нет рабочих мест
  • Скрипт Perl работает отлично в интерактивной оболочке, но не как задание cron
  • Могу ли я переместить 0yum-cron из cron.daily в montly?
  • Есть ли что-нибудь в unix crontab, чтобы определить, что это должно быть выполнено в стандартное время PST / CST?
  • Обновление Cronjob gitlab-ce не выполняется
  • Как получить список всех запланированных заданий cron на моей машине?
  • Переключение оболочек на одно задание cron
  • Почему мои пользовательские файлы crontab неизменяемы и не выполняются даже после изменения атрибута на mutable?
  • Почему я не могу создать файл с установленным по умолчанию cron на сервере debian wheezy?
  • Interesting Posts

    Почему root всегда входит в систему с ttyS0 (даже после перезагрузки системы)?

    Открытый, некорневой доступ к файловой системе?

    zsh: подстановка команды не наследует stdin из родительского

    Запуск X без корня

    «Ssh-add -d» отказался удалить идентификатор

    Почему эта команда Bash использует regex, не заменяя мои скобки?

    Автоматическое обновление системы с помощью Oracle Linux 7

    Как вы можете перемещать (или копировать) все файлы определенного типа в каталог в Unix?

    При удалении файла под OpenSolaris нет места на устройстве

    Обходной режим CLIENT (порт smtps / 465) не реализован

    Как узнать, что FXP включен или нет? (AIX FTPD)

    Что будет меньше налогообложения на более старой системе, более старой школьной системы, такой как debian или более легкая среда рабочего стола, например lxde?

    Почему моя установка Arch устанавливается на случайных этапах во время загрузки?

    Чередование долговременной задачи для приостановки / запуска для уменьшения процессора

    Перезагрузка Linux из памяти

    Linux и Unix - лучшая ОС в мире.