最近发现sendmail的进程较多,观察了一下,是在消费/var/spool/clientmqueue/下的内容,这里面文件太多ls直接卡死了,那么如何列出来呢?
先后使用了ls、tree、find等命令,效果都不明显。
最后使用locate成功解决~
sudo locate clientmqueue > ~/1.txt
观察了一下至少有600多万个文件。。。
当你使用简单的sendmail发邮件的时候, 或者系统默认要发一些邮件(比如cron发的邮件)的时候,首先会把邮件拷贝到这个目录里,然后等待MTA(mail transfer agent) 来处理,MTA做的事情通常是把这个目录中的邮件弄到/var/spool/mqueue里,然后再发送到真正的目的地。出现/var/spool /clientmqueue/非常大的情况通常因为没有合适的MTA发送邮件,就都积累在这里了,假如这里的邮件并不是你需要的,你可以简单的删掉他们。
根据需要发邮件的内容来看,解决这块主要两点:
1、针对crontab一些输出之类的其会发邮件,需要定时任务后加上
>/dev/null 2>&1
2>是重定向错误
2、梳理业务逻辑控制发邮件频次
当然这两个前段时间都处理了一下,这次主要启用的机器有一些之前的邮件,所以删除了
ls /var/spool/clientmqueue | xargs rm -f
xargs的功能:它将输入输出给xargs后面的命令,作为那个命令的参数
如果你感觉删的比较慢想先快速解决,那么先给他mv一下吧,把事情解决了,然后慢慢删
完事后记得重启一下sendmail sudo /etc/init.d/sendmail restart
贵站文章写得很好!
谢谢~
质量文章,学习了~
谢谢~~~