修改ubuntu系统的open files最大值

前言

本来是一个简单的事情,没想到弄了半天,还是没修改好。最后发现Ubuntu和CentOS似乎有一点点不一样。

首先修改:/etc/security/limits.conf,重启系统。发现依然是1024

再次修改:/etc/rc.local的末尾添加:ulimit -SHn 65535,重启系统,依然是1024,不起作用,郁闷。

查了半天,终于摆正姿势,Ubuntu下修改的步骤:

第一步:配置/etc/security/limits.conf

sudo vim /etc/security/limits.conf

文件尾追加

* hard nofile 65535 
* soft nofile 65535

说明:

limits.conf文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中pam_limits.so的配置文件,而且只针对于单个会话。

limits.conf的格式如下:

username|@groupname type resource limit,
  • username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
  • type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值
  • resource,
    core - 限制内核文件的大小
    date - 最大数据大小
    fsize - 最大文件大小
    memlock - 最大锁定内存地址空间
    nofile - 打开文件的最大数目
    rss - 最大持久设置大小
    stack - 最大栈大小
    cpu - 以分钟为单位的最多 CPU 时间
    noproc - 进程的最大数目
    as - 地址空间限制
    maxlogins - 此用户允许登录的最大数目

要使limits.conf文件配置生效,必须要确保pam_limits.so文件被加入到启动文件中。查看/etc/pam.d/su文件中有:
session required /lib/security/pam_limits.so

第二步:/etc/pam.d/su或/etc/pam.d/common-session

/etc/pam.d/supam_limits.so这一行注释去掉 重起系统,或者,/etc/pam.d/common-session加上以下一行session required pam_limits.so

我修改的是/etc/pam.d/su

第三步:配置/etc/profile

最后加上ulimit -SHn 65535

重启系统后。执行ulimit -n,发现已经是65535