公司有一台配置很差的老服务器,应该使用的年份不少了,可能也不少于十年了吧。这段时间写入一个文件,文件不论大小都报错磁盘空间不足,如下:
#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
本文出自 “广州linux运维” 博客,请务必保留此出处http://milenovo.blog.51cto.com/10554394/1688766
原文地址:http://milenovo.blog.51cto.com/10554394/1688766