周末因为一个鸟程序的日志每条都疯狂输出到一个文件,直接把inode塞满了。记一下排查方法和删除大量文件所做的一些措施。
- 问题排查
for i in /*; do echo $i; find $i | wc -l; done
首先使用上面的这条命令一步步缩小范围,确定在哪个目录下inode的节点数过多异常。
最后我锁定到了日志目录,可是里面只有几个日志文件,在目录下直接运行这条命令也只能看到可见文件的inode数,在上一级目录却发现inode数为200多万。
在目录下运行ls -f命令发现有大量的隐藏文件,所以对这些文件需要进行删除操作。
- 文件的删除
(1)很多人在博客上写用rsync这条命令。新建一个空文件夹,然后使用rsync进行同步并删除,使用之后inode的确被释放出来了,可是速度真的慢。并不像网上说的快的一批。大概一秒也就删了十个左右的文件。运行了好久没啥用。
(2)使用find之后接上xargs rm -f,这个比起rsync还是快一点。
*可是等上面的命令运行结束之后,文件夹里还是有文件,但是怎么都删不掉了。
ls -f 显示memory exhausted,rm -rf ./运行一会儿就被killed了。
(3)最后使用ls -f | xargs -n 1 rm -rf 这条命令进行了删除,速度看起来比之前的命令都更快一点。
所以我真的不知道为什么rsync并没有那些博客里说的那么快,可能我输入命令时的姿势不够正确吧