关于这个问题老左前几天在"解决"/bin/rm: Argument list too long"删除文件错误"中也是解决的这个问题,当时因为看到服务器被文件占满,然后就顺手删除文件,但是网友反映说网站又无法打开,操作任何命令重启WEB的时候还是提示"No space left on device"。
于是可以想到肯定还是这个问题,从搜索的结果看到应该是sendmail导致的邮件保存数据,如果是仅仅删除肯定是不行的,必须彻底断掉继续产生文件才可以。这里会将邮件保存数据在"/var/spool/mqueue"和"/var/spool/clientmqueue"中。
第一、看看占用的垃圾文件
这里我们需要到这个目录下,然后执行rm命令删除掉,鉴于数据较大,直接执行还不好删除,所以需要用到"ls | xargs -n 10 rm -rf"命令,这里需要注意,执行这个命令之前,你当前目录要在需要删除的目录下,你不要直接在根目录或者其他目录执行,要不会很惨删除系统文件了(不会的请勿尝试)。
第二、解决自动生成文件问题
清理垃圾文件之后,暂时可以释放空间,网站和WEB环境也都正常,但是这也不是长久之计。因为等会再刷新后发现又生成不少文件。所以必须彻底的解决问题。看到网上有不少类似的问题,提到是因为crontab自动任务导致的缓存,要求在任务队列中加上"/dev/null 2>/dev/null"。
但是,我看到这个朋友的服务器中没有定时任务执行,所以应该这个方法不对。搜罗半天没有找到合适的方法案例,就想到这个朋友也没有用邮件功能,索性先把sendmail卸载掉吧。(原本是关闭的,但是如果重启服务器后又会启动,所以直接卸载yum remove sendmail -y)
卸载之后再重启服务器,稍等稍等后,"/var/spool/mqueue"目录中暂时没有出现缓存文件,看似问题要解决了,然后再到日志(/var/log/maillog)中看看,看到postfix还在继续不断,产生日志文件,虽然文件很小,但是也不是长久之一,所以要不直接把postfix也卸载掉吧。
第三、检查看看是否完成
这个时候,我在重启服务器,检查网站、WEB面板、以及上面两处日志文件位置,好像没有产生邮件日志文件,至少目前这个问题可以解决。(或者禁止25端口,应该也可以阻止垃圾邮件缓存)