在Linux或类似Unix的系统上通过Crontab命令禁用电子邮件警报

时间:2020-01-09 10:38:12  来源:igfitidea点击:

如何禁用crontab发送的电子邮件警报?
当我的作业被执行并且作业无法正常运行时,它将向root发送一封电子邮件。
为什么我会收到来自cron的电子邮件到我的root帐户?

如何在Linux或类似Unix的系统上禁用cron作业发送的电子邮件警报?

crontab命令用于为单个用户维护crontab文件。
默认情况下,命令或脚本(如果产生的话)的输出将通过电子邮件发送到您的本地电子邮件帐户。
要停止接收来自crontab的电子邮件输出,您需要在crontab条目的末尾追加以下字符串。

Cron作业可防止发送错误和输出

为防止发送错误和输出,请在每个cron作业的行末添加以下任一内容,以将输出重定向到/dev/null。


保存并关闭文件。
有关更多信息,请参见将STDOUT和STDERR重定向为null和" BASH Shell重定向stderr到stdout(将stderr重定向到File)"以禁止输出。

设置MAILTO变量以阻止cron守护程序发送电子邮件

另一种选择是在crontab文件或shell脚本的开始处设置MAILTO =""变量。
这也将禁用电子邮件警报。
编辑/打开您的Cron作业:

$ crontab -e

在文件顶部,输入:

MAILTO=""

当然,如果配置了Postfix等电子邮件服务器,我们也可以重定向电子邮件:

MAILTO="[email protected]"

保存并关闭文件。
我们可以根据需要混合它们。
例如:

MAILTO="backup.admin@domain-here"
@daily /scripts/backup.sh 

MAILTO="storage.admin@domain-here"
* 45 * * * /scripts/test-raid-array.sh

另一个例子:

@weekly /scripts/containers-backup  >/dev/null 2>&1

MAILTO="[email protected]"
@daily /scripts/test-raid-array.sh 

MAILTO=""
@monthly /path/to/script/logs.sh > /var/log/monthly.log