1,原理分析:
通过调查,是由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送Cron所有者, 而由于客户环境中的sendmail和postfix没有正常运行,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面,而且没有自动清理转换的机制,所以长达一年的时间,此目录已堆积了大量的文件。查看man cron的信息,可以知道会发送给cron owner.
[root@mw1 postfix]# man cron
DESCRIPTION
Cron searches /var/spool/cron for crontab files which are named after accounts in crontabs found are loaded into memory. Cron also searches for /etc/crontab and the
files in the directory, which are in a different format (see crontab(5) ). Cron then wakes up every minute, examining all stored crontabs, checking each command to see
if it should be run in the current minute. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment
variable in the crontab, if such exists).
(注意:如果sendmail或者postfix正常运行,则会在/var/mail目录下产生大量的邮件,也会堆积)
2, 解决方案:
在cron的第一行加入 MAILTO=""便可,这样执行当前用户的Cron时,不会发送邮件。
Please add the MAILTO="" in the head of cron , please see the blow sample.
[root@mw1 postfix]# crontab -e
MAILTO=""
*/5 * * * * /usr/bin/php /path/to/1.php
或者直接在在后面重定向
*/5 * * * * /usr/bin/php /path/to/1.php> /dev/null 2>&1