前段时间在下发彩信的时候,只能收到title,查找发现是临时存彩信文件的目录太多文件了(当然,一个号码存一个彩信包估计也有问题),导致程序写不进目录,也读取不到彩信内容。
今天研究了一下,并且重现当时的情景。
按我理解,首先linux创建文件上限和两方面因素有关。1是磁盘容量,2就是索引节点inode了。
linux下用df命令查看磁盘空间和inode占用情况,网上一大堆。我比较喜欢用的是df -h 查看容量,df -ihT 查看inode和文件系统类型。
那么什么是inode呢?
简单的就是存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。可以用stat +文件名来查看
linux下inode和文件名是分离的,所以cp或者mv文件,只改变了文件名,但是他的inode不会变。有时候,文件名包含特殊字符,没办法用rm删除(用转义符号也没用),这时候可以直接删除inode节点
比如:我们在windows上传了一个带有特殊符号的文件,比如
首先用ls -il命令查看其inode,
然后使用命令find ./ -inum 36175886 -exec rm -i {} \;(使用find命令在当前目录下查找inode是36175886 的文件,将其作为参数传给rm命令,参数位置在{}里,以\;表示结束)。
当然,有时候还可以用双引号将要删除的文件名括起来。
好了,回到创建文件过多的情况。这时候,创建文件也出错No space left on device,用vim打开文件也出错E138: Can't write viminfo file,只能删除了。