工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆

linux 操作系统下目录创建和文件创建的限制

我们经常程序在生产环境上上线好几天了,突然不工作了,反复查找原因,发现在Linux操作系统下无法创建目录或文件了,那一般有哪些原因会导致出现这种情况呢?

1.磁盘满
最常出现的问题就是磁盘满了,第一时间查看这个原因,在linux系统下执行df命令,Use%这一列是否有100%的磁盘。

2.文件名称长度限制
linux系统下ext3文件系统内给文件/目录命名,最长只能支持127个中文字符,英文则可以支持255个字符,包含完整路径名称及目录(/)的完整文件名为4096个字符。
测试代码:

Java代码  
  1. LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`   
  2. touch $LENTH  


当增加到256时,touch报错,File name too long

3.目录数量的限制
ext3文件系统下一级子目录是有数量限制的,一般是31998(个),为什么是这个数字,我也不清楚,网上有说是Linux为了cpu的搜索效率而规定的,要想改变数目大概要重新编译内核.
测试代码:

 
  1. for i in {1..32000};do mkdir $i;done    
  2. mkdir: cannot create directory `31999': Too many links   
  3. mkdir: cannot create directory `32000': Too many links  



4.文件个数限制
目录下对于文件个数没有限制,文件个数的限制主要取决于磁盘文件系统的inode数。
df -i或者使用tune2fs -l /dev/sdaX或者dumpe2fs -h /dev/sdaX查看可用inode数,后两个命令输出结果是一样的,但是跟df所得出的可用inode数会有些误差,至今不明白什么原因。

5.打开文件数限制(文件句柄、文件描述符)
ulimit -n 65535设置,或者/etc/security/limit.conf里设置用户打开文件数、进程数、CPU等

----------------------------------------

for i in `ls`;do echo $i;cd $i;ls -l | wc -l;cd ..;done

find ./ -type d -empty -exec rm -fr {} \;

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):