/etc/security/limits.conf

#<domain>      <type>  <item>         <value>
#

#*               soft    core            0              禁止创建core文件
#*               hard    rss             10000     非root用户最多使用10M内存
        hard    nproc        20     最多进程数限制在20
        soft    nproc           20
        hard    nproc           50
#ftp             hard    nproc           0
        -       maxlogins       4

limits.conf的工作原理: 
limits.conf的后端是这样工作的:limits.conf是pam_limits.so的设置文件,然后/etc/pam.d/下的应用程式调用pam_***.so模块。譬如说,当用户访问服务器,服务程式将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。 

例:限制admin用户登录到sshd的服务不能超过2个 

在/etc/pam.d/sshd 中添加 session required pam_limits.so 

在/etc/security/limits.conf中添加 admin - maxlogins 2 

查看应用程式能否被PAM支持,用ldd 

limits.conf文件的参数 
Limits.conf文件的参数能设置成以下两种形式之一: 
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。 
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或通过编辑 /etc/security/limits.conf。 
1.core - 限制内核文件的大小 
何谓core文件,当一个程式崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是个内存映象(同时加上调试信息),主要是用来调试的。 core文件是个二进制文件,需要用相应的工具来分析程式崩溃时的内存映像。 
系统默认core文件的大小为0,所以没有创建

能用ulimit命令查看和修改core文件的大小。 
$ulimit -c
0
$ ulimit -c 1000
$ ulimit -c
1000 
-c 指定修改core文件的大小,1000指定了core文件大小。也能对core文件的大小不做限制,如: 
# ulimit -c unlimited
#ulimit -c
unlimited 
如果想让修改永久生效,则需要修改设置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。 
2.nofile - 打开文件的最大数目 

对于需要做许多套接字连接并使他们处于打开状态的应用程式而言,最佳通过使用 ulimit ?n,或通过设置nofile 参数,为用户把文件描述符的数量设置得比默认值高一些。

 

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/login 文件中有:

session required /lib/security/pam_limits.so

 

按下面说的,可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,这个不好办

或者修改/etc/security/limits.conf,但要重启

另外,没查到linux究竟最大描述符有没有限制,其他几个限制要不要改