关于这个问题前几天在"解决"/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端口,应该也可以阻止垃圾邮件缓存)
附:解决"/bin/rm: Argument list too long"删除文件错误
前几天帮助一个网友处理一台服务器的问题,这个朋友安装的是面板,面板无法打开,我在重启Nginx后发现有报错"No space left on device",应该是磁盘空间不足导致的。那就根据习惯肯定是有缓存文件或者有系统垃圾邮件堆积导致的,直接去删除就好了。
然后通过排查找到较大文件的目录,理应看到之后通过rm就可以直接删除,但是执行后出现"/bin/rm: Argument list too long"报错,应该是目录中的文件太多、处理时间太长导致的。
ls | xargs -n 10 rm -rf
通过xargs命令,将文件10个分成一组,然后分批删除,这样就不会出现错误了。
备注信息:我们执行上面命令的时候,一定要谨慎,要在当前需要删除文件的目录下执行,不要在其他目录中操作,要不你会删除其他目录文件的。