Как остановить ежемесячную электронную почту cron

Сервер – Debian 6.0. В / etc / aliases у меня есть;

root: me@mydomain.com 

Это значит, что корневые электронные письма отправляются мне напрямую. Сегодня ежемесячный скрипт, который я разместил в /etc/cron.monthly, отправил мне по электронной почте его вывод. Это довольно простой скрипт, который выглядит так:

 #!/bin/bash cd /a/directory rm -rf ./* wget http://www.site.com/fresh-copy.zip unzip fresh-copy.zip rm fresh-copy.zip 

Электронная почта, которую я получил, приведен ниже;

 **Subject**: Cron <root@myserver> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) **From**: root@my.server.com **Body**: /etc/cron.monthly/speedtest: --2013-03-01 06:52:01-- http://www.site.com/fresh-copy.zip Resolving www.site.com... 11.22.33.44 Connecting to www.site.com|11.22.33.44|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 99763924 (95M) [application/zip] Saving to: `fresh-copy.zip' 0K .......... .......... .......... .......... .......... 0% 11.7M 8s 50K .......... .......... .......... .......... .......... 0% 11.3M 8s 100K .......... .......... .......... .......... .......... 0% 11.4M 8s *CUT OUT FOR BREVITY* 97350K .......... .......... .......... .......... .......... 99% 16.9M 0s 97400K .......... .......... ..... 100% 11.6M=9.7s 2013-03-01 06:52:11 (9.78 MB/s) - `fresh-copy.zip' saved [99763924/99763924] Archive: fresh-copy.zip inflating: file1.ext inflating: file2.ext inflating: file3.ext inflating: file4.ext inflating: file5.ext 

Единственным выходом в этом письме является команда wget и unzip . Я могу отредактировать скрипт и поместить > /dev/null в конец на этих двух строках, но действительно ли это лучший способ сделать это? Если я добавлю больше команд в скрипт, производящий вывод, мне всегда придется добавлять на > /dev/null в каждую строку. Есть ли способ отключить уведомление по электронной почте о выходе из этого скрипта cron?

Более простой способ заключается в том, чтобы вместо добавления скрипта в каталог cron.monthly добавить его в старомодный crontab, где вы можете указать на линии crontab, что вы хотите, чтобы выход был в / dev / null. Как это:

 crontab -e 

для редактирования crontab. Затем добавьте следующую строку:

 @monthly /path/to/script > /dev/null 

Это будет означать, что STDOUT перенаправляется на / dev / null, но STDERR будет по-прежнему входить в электронную почту. Если вы также не хотите получать почту по ошибке, строка должна выглядеть так:

 @monthly /path/to/script > /dev/null 2>&1 

Я бы рекомендовал вам продолжать использовать > /dev/null в вашем скрипте (или использовать параметр -q для wget и unzip ). Таким образом, если одна из команд выдает ошибки, они будут по-прежнему отправляться вам по электронной почте, но нормальный выход будет подавлен.

cronic время я использую cronic , это никогда не подводило меня.

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

Чтобы использовать его, загрузите сценарий cronic и измените команду cron (например)

 * * * * * awesome_command 

в

 * * * * * /path/to/cronic awesome_command 

Если вы хотите «отключить» только этот скрипт, вы можете поместить /dev/null 2>&1 в конец строки, вызывая ваш файл в файле crontab. С помощью этого метода вы не можете поместить свой скрипт в ежемесячную папку, вам нужно отредактировать файл crontab с помощью:

 contab -e 

Или вы можете отредактировать конфигурацию cron и удалить из нее свою почту. Здесь все объясняется.