解决crontab分钟级定时任务造成系统资源耗尽

root      36355  36343  0 Aug19 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      36360  36355  0 Aug19 ?        00:00:01 /usr/sbin/postdrop -r
root      37174   1626  0 00:00 ?        00:00:00 CROND
root      37209  37174  0 00:00 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      37214  37209  0 00:00 ?        00:00:01 /usr/sbin/postdrop -r
root      38574   1626  0 00:10 ?        00:00:00 CROND
root      38599  38574  0 00:10 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      38600  38599  0 00:10 ?        00:00:01 /usr/sbin/postdrop -r
root      39896   1626  0 00:20 ?        00:00:00 CROND
root      39921  39896  0 00:20 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      39922  39921  0 00:20 ?        00:00:01 /usr/sbin/postdrop -r
root      41226   1626  0 00:30 ?        00:00:00 CROND
root      41265  41226  0 00:30 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      41274  41265  0 00:30 ?        00:00:01 /usr/sbin/postdrop -r
root      42600   1626  0 00:40 ?        00:00:00 CROND
root      42625  42600  0 00:40 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      42626  42625  0 00:40 ?        00:00:01 /usr/sbin/postdrop -r
root      43954   1626  0 00:50 ?        00:00:00 CROND
root      43979  43954  0 00:50 ?        00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root      43980  43979  0 00:50 ?        00:00:01 /usr/sbin/postdrop -r
root      45318   1626  0 01:00 ?        00:00:00 CROND

注:如果不加 >/dev/null 2>&1   邮件服务/var/spool/clientmqueue/ 文件数会过多,导致inode被耗尽。当定时任务被执行时,会给系统发邮件,系统默认的时sendmail服务经常是关闭的,所以定时任务发送的邮件就会临时堆在/var/spool/clientmqueue/.时间久了,文件数就会很多。

原因:crond 引起大量sendmail进程
解决:禁止Crontab产生邮件

解决方案:

方案1:

定时任务结尾要加上  >/dev/null 2>&1  等价于1>/dev/null       2>/dev/null  ,意思就是把所有输出都追加到/dev/null中。

2>&1就是把标准错误重定向到标准输出(>&)

>/dev/null 2>&1

或者

&> /dev/null

例如:
*/1 * * * * > /home/doone/test.txt >/dev/null 2>&1
*/1 * * * * > /home/doone/test.txt &> /dev/null

方案2:

在定时任务的脚本前第一行增加

MAILTO=""