日期:2014-05-16  浏览次数:20571 次

关于去掉linux打开文件数限制的办法
1、/etc/pam.d/login 添加  
session    required     /lib/security/pam_limits.so
注意看这个文件的注释
2. /etc/security/limits.conf 添加
www             -       nofile          1006154
www 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大了。
3. 修改 /etc/rc.local  添加
echo 8061540 > /proc/sys/fs/file-max
做完3个步骤,就可以了。

如果采用程序,则必须是root用户
#include 

int main()
{

struct rlimit limits;
int i;
int cur,max;
getrlimit(RLIMIT_NOFILE,&limits);
cur = limits.rlim_cur;
max = limits.rlim_max;
printf("cur=%d;max=%d
",cur,max);
////////////////

limits.rlim_max = 10240;
setrlimit(RLIMIT_NOFILE,&limits);


///////////
getrlimit(RLIMIT_NOFILE,&limits);
cur = limits.rlim_cur;
max = limits.rlim_max;
printf("cur=%d;max=%d
",cur,max);
return 0; 
}

补充说明:
/proc/sys/fs/file-max
该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。
缺省设置:4096
/proc/sys/fs/file-nr
该文件与 file-max 相关,它有三个值:
已分配文件句柄的数目
已使用文件句柄的数目
文件句柄的最大数目
该文件是只读的,仅用于显示信息。