linux上系统磁盘满了的问题
今早打不开前台的东西,一打开会报 “执行SQL发生错误!错误:Incorrect key file for table /tmp/#sql_6543_0.MYI; try to repair it”
经过一顿查询说是磁盘满了,先去wdCP上(类似宝塔)去看了下磁盘使用率,结果有一个使用率达到了100%
然后我用xsell进去根目录,查下是哪个文件满了,使用命令:
du -h --max-depth=1
执行的时候就很慢,就确定了,里边肯定有很大的文件占用了磁盘空间,
/www 是数据盘,不是系统盘,原因是系统盘满了呢,于是
cd /var
du -sh *
结果是这个文件占用的太大了
顺着再进去这个文件里
cd var
du -sh *
顺着spool找
cd spool
du -sh *
看到这么多大文件
这样看比较直观
然后我就想/var/spool/clientmqueue这个目录干嘛用的,纠结了半天,谷歌了下,原来/var/spool/clientmqueue是如果系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。
服务器上确实有cron定时执行数十个脚本,而且都没有设置输出定向,日积月累的文件都被保存在/var/spool/clientmqueue目录下面了==
解决方法:在cron的自动执行语句后加上> /dev/null 2>&1 例: 4 3 * * * /usr/bin/w > /dev/null 2>&1 这样就OK拉,就不会写到那个目录下了…
在这里说一点,/var/spool/clientmqueue目录文件太多,rm -rf *时候会提示:
“-bash: /bin/rm: Argument list too long“… 意思是参数太长,rm 干不了。 可以用ls | xargs rm -f这个命令将/var/spool/clientmqueue目录下所有文件删除。 or
也可以直接再ftp上直接删把,比较直观===