7

У меня есть несколько запущенных заданий cron (в /etc/cron.daily , /etc/cron.hourly , /etc/cron.weekly и т.д.) И по электронной почте root@localhost с результатами. Я хотел бы остановить эти электронные письма, если задания выполняются успешно, и только электронная почта при ошибке (что, как я понимаю, можно сделать, перенаправив стандартный stdout в /dev/null). Я понимаю, как это сделать для отдельных заданий cron, но сценарии в этих специальных каталогах запускаются с использованием run-parts . Каков наилучший способ подавления успешных писем для этих сценариев?

3 ответа3

5

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

Одним из примеров может быть cronic, просто добавьте «cronic» к «run-parts», например:

# m h dom mon dow user  command
 17 *  *   *   *  root  cd / && /etc/cronic run-parts --report /etc/cron.hourly

где /etc/cronic - это место с исполняемым скриптом cronic, загруженным с упомянутого веб-сайта.

5

Вы должны отправить успешные уведомления по электронной почте в /dev/null чтобы они исчезли.

Но вы хотите видеть неудачные уведомления по электронной почте.

Это означает, что вам нужно сначала направить стандартный stdout в /dev/null а затем направить /dev/stderr в стандартный stdout

попробуйте изменить часть перенаправления ваших cronjobs на

>/dev/null 2>&1

Смотрите эту ссылку

1
  • Если скрипт ведет себя хорошо, он будет писать только в STDOUT если он успешен, и в STDERR в случае ошибки.
  • По умолчанию cron отправляет по почте все, что пишет скрипт в STDOUT или STDERR (Arch wiki).

Итак, если вы хотите сохранить уведомления об ошибках, не перенаправляйте STDERR , просто STDOUT:

COMMAND > /dev/null

Если вы выполняете типичные >/dev/null 2>&1 , вы фактически подавляете оба (документация bash).

  1. Сделайте дескриптор файла stdin копией /dev /null.
  2. Сделайте дескриптор файла stderr копией stdout (которая уже указала на /dev /null).

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