即使redirect到/ dev / null 2>&1,Cron邮件也会输出

下面的代码应该将所有输出redirect到/ 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自己),但是我认为你应该在你的crontab中有> /dev/null 2>&1部分,而不是在你的脚本文件中。 所以你的crontab可能看起来像这样:

 @hourly /your/script/location > /dev/null 2>&1 

希望这可以帮助。