阻止 linux 通过电子邮件向我发送 cron 错误?

5 linux sendmail cron

今天我设置 ssmtp 从 sendmail 给我发电子邮件。然而,我没想到的是,像 cron 这样的应用程序会给我发电子邮件。

在备份数据库之前,我的一个 cron 脚本尝试创建路径/年/月/,并且由于年和月已经存在,我收到了电子邮件

From: Root
Subject: Cron <root@myserver> /path/scripts/mysqlbackup.sh
mkdir: cannot create directory `2010': File exists
mkdir: cannot create directory `09': File exists
Run Code Online (Sandbox Code Playgroud)

我如何让它停止?它只持续了一个小时,所以如果这是唯一的错误,我只会修复脚本。

the*_*ive 6

作为重定向脚本输出的替代方法,您可以通过设置更改 crontab 文件的邮件目的地MAILTO,例如。MAILTO=nobody


wzz*_*zrd 5

默认情况下,cron 会向您发送 cronjob 的输出消息。更具体地说,它保存 cronjob 的 stdout(标准输出)和 stderr(标准错误输出),并将其通过电子邮件发送给 crontab 的所有者,或在 crontab 的 MAILTO 变量中命名的用户。

为了防止输出到达你,你必须确保 stdout 和 stderr 没有被保存,而是写入文件或 /dev/null。

你可以通过在你的工作定义中使用这样的东西来做到这一点:

job.sh > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

这会将 stdout 重定向到 /dev/null('> /dev/null' 部分)并将 stderr 重定向到 stdout,从而也重定向到 /dev/null('2>&1' 部分)。奇怪的语法,对吧?;-)

高级Bash脚本编程指南有很多更多关于我的信息/ O重定向

或者,根据 vixie-cron 在 RHEL4 和 RHEL5 上的联机帮助页,您可以将 MAILTO 留空(即,在您的 crontab 中定义 MAILTO="")并且您将不会收到任何邮件。