Приведенный ниже код должен перенаправлять весь вывод в / dev / null, однако root по-прежнему получает электронное письмо с выводом первой команды (/ usr / bin / svnadmin). Зачем?
#!/bin/sh
# Dump repo and upload via tarsnap
/usr/bin/svnadmin dump /srv/repos/www | gzip > /srv/repos/backup/www-repo-`date --iso-8601`.gz > /dev/null 2>&1
/usr/local/bin/tarsnap -c -f www-repo-`date --iso-8601` /srv/repos/backup/www-repo-`date --iso-8601`.gz > /dev/null 2>&1
Вы передали по конвейеру вторые команды STDOUT и STDERR в / dev / null, а STDOUT первой команды передали второй команде. Итак, STDERR первой команды отправляется вам по электронной почте.
Ты должен написать
( /usr/bin/svnadmin dump /srv/repos/www | gzip > /srv/repos/backup/www-repo-`date --iso-8601`.gz ) > /dev/null 2>&1
С моей репутацией я не могу добавлять комментарии, поэтому мне придется отправить ответ, хотя я не уверен, что это так.
Как выглядит ваш crontab? Я не думаю, что это ваш скрипт отправляет электронную почту, это делает cron / crontab. Пожалуйста, покажите нам содержимое вашего crontab (crontab -e).
Возможно, я ошибаюсь (вчера я сам впервые использовал cron), но я думаю, что у вас должен быть > /dev/null 2>&1
часть в вашем crontab, а не в вашем файле скрипта. Итак, ваш crontab может выглядеть примерно так:
@hourly /your/script/location > /dev/null 2>&1
Надеюсь это поможет.