在向crontab中添加新的记录时,添加完成后保存报错:/var/spool/cron/tmp.XXXXnewi7F: No space left on device
从报错原因看,是磁盘满了。
使用df -lh查看,发现/var仍然有容量。使用df -i查看,发现/var已经使用了100%。
df -i是什么呢?是用于查看文件结点的,Linux下的目录会建立索引结点(inode),用于索引文件。每个文件都会占用一个索引结点。索引结点是有限的,如果索引结点全部被使用,系统无法给创建的文件分配索引结点,就会报错,新文件就无法创立。
问题根源在于/var/spool/clientmqueue目录下,存在大量的文件。使用ls -l命令查看,直接被刷屏。使用ls | wc -l命令统计了下,存在20W的文件,这就难怪inode被占用完了。
这些文件都是crontab 中执行任务产生的输出,当没有重定向的固定的位置时,全部写入到该目录下的文件中。
现在只要删除这些文件就可以了。那么问题来了,有这么多文件,怎么删除呢?
方法1:find ./* | xargs rm -rf 或者 find ./* -mtime +30 -type f
方法2:ls | xargs -n 100 rm -rf 这个是将当前目录下文件列出来,100个为一组(空格隔开),由rm -rf 删除。
参考自:
http://blog.163.com/ly_89/blog/static/186902299201191233058625/
http://www.2cto.com/kf/201311/260596.html