/etc/security/ulimit.conf对应的库文件是/lib64/security/pam_ulimit.so 。该文件在国内广大LINUX从业者的一再科普下,基本已是人众皆知的东西。一般服务器拿来第一件是上去就是改nproc和nofile 。不过这里还是顺带再总结下吧。之所以可以ulimit配置会在用户登录后被调用,是因为在system-auth配置文件(redhat系统中是该文件,基他系统中不一定是)中有如下一条:

1[root@server0 security]# cat /etc/pam.d/system-auth|grep -i limit
2session     required      pam_limits.so
3#from www.361way.com

在配置类型中会有soft限制和hard限制两种,两种限制的区别如下:

  • 硬限制是可以在任何时候任何进程中设置,但硬限制只能由超级用户配置;
  • 软限制是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值;

soft 指的是当前系统生效的设置值,hard 表明系统中所能设定的最大值。soft 的限制不能比hard限制高 ;
用 – 就表明同时设置了 soft 和 hard 的值。

其可以配置的资源类型如下:

 1core - 限制内核文件的大小
 2date - 最大数据大小
 3fsize - 最大文件大小
 4memlock - 最大锁定内存地址空间
 5nofile - 打开文件的最大数目
 6rss - 最大持久设置大小
 7stack - 最大栈大小
 8cpu - 以分钟为单位的最多 CPU 时间
 9noproc - 进程的最大数目
10as - 地址空间限制
11maxlogins - 此用户允许登录的最大数目

可以通过如下命令查看软硬限制:

1ulimit -Sn 查看的是软限制
2ulimit -Hn 查看的是硬限制

需要注意的是,在修改nofile时,一般还需要修改sysctl.conf中的file-max的值,如下:

1# vim /etc/sysctl.conf
2修改下面的参数
3fs.file-max = 1000000  // 这个数值应大于hard limit

修改完并生效后,可以通过查看/proc/sys/fs/file-max文件确认。