我的 /etc/cron.d/apache2watch 文件中有以下行
* * * * * root /bin/apache2-restart.sh &> /dev/null
由于这个原因,我目前收到了数百封发给 root 的邮件。我不知道为什么 root 仍然每隔一秒左右就会收到一封邮件,告诉我 cron 作业已运行 - 即使我已明确将输出重定向到 /dev/null
谁能解释为什么 root 继续接收邮件,以及我该如何改变这种行为?
我在 Ubuntu 10.04 LTS 上运行
答案1
您仍在接收电子邮件,可能是因为您仅将标准输出重定向到 /dev/null。您的 shell 脚本可能也会写入 stderr,因此正确的重定向应如下:
* * * * * root /bin/apache2-restart.sh > /dev/null 2>&1
答案2
MAILTO=""
在 crontab 行之前插入。
答案3
为什么不在特定用户的 'root' crontab 中设置 MAILTO=""。这将禁用 /var/spool/mail/ 中的邮件消息记录
答案4
您已将输出重定向到 /dev/null,但前提是您使用 bash 作为 crontab shell。我相信默认情况下您会使用 /bin/sh。
为了修复此问题,我推荐 thor 的解决方案:
* * * * * root /bin/apache2-restart.sh > /dev/null 2>&1
另一个解决方案是将下面的代码放在 crontab 条目的开头,从而将 CRON 更改为使用 bash:
SHELL=/bin/bash