公司有一台配置很差的老服务器,应该使用的年份不少了,可能也不少于十年了吧。这段时间写入一个文件,文件不论大小都报错磁盘空间不足,如下:

#df -h

 文件系统             1K-块           已用            可用             已经%                    挂载点

 /dev/hdd2          2063536    1919932      38780         99%                       /

/dev/hdc2           70557084   57616416    9356568     87%                      /ts


     看着结果,想着可能是文件块大小占用空间,第一反应就是找出一些没有用的大文件,把它删掉

     删掉之后结果如下:

#df -h

 文件系统            容量          已用            可用             已经%                    挂载点

 /dev/hdd2          2.0G          1.2G             7.7M          64%                       /

/dev/hdc2           68G            40G             25G               62%                    /ts

    由结果看,应该可以在/目录下写入文件了,可是写入文件后,还是一样报磁盘空间不足。心塞了。。

    后来想了一下, 这个不一定是磁盘满了, 也可能是inode用完了

#df -i

文件系统              Inode        (I)已用       (I)可用   (I)已用%     挂载点

/dev/hdd2           262144    262144           0         100%          /


果然是inode用完,这个是某些临时的小文件太多了,把inode用完了,把它删掉就行了。想了一下,可能是公司的这台老服务器crontab久了,占了太多节点。最有可能的是那个目录呢?? 呵呵,想都不用想了
 # find /var/spool/clientmqueue -type f -print -exec rm -f {} \;

这个命令中 /var/spool/clientmqueue 是要删除的文件所在的目录 -type f这个参数限定find只查找普通文件(即不是管道文件,不是块文件,不是链接文件,不是目录等),防止误删除系统文件。

      如果,删除了这些文件,节点还不够用的话,还可以删除/tmp目录的0字节文件。


 原因分析:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件;
 解决办法:
 将crontab里面的命令后面加上  > /dev/null 2>&1
  或者
  crontab里面的命令后面加上  > /dev/nulllinux