关于 linux ulimit 限制 noproc 问题

ulimit 用于限制 shell 启动进程所占用的资源,支持如下各类类型的限制:所建立的内核文件的大小、进程数据块的大小、Shell 进程建立文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。shell

关于RHEL6中ulimit的nproc限制,RHEL6和RHEL5仍是有一些细节上的区别的:vim

当前shell下更改用户可打开进程数
app

做为临时限制,ulimit能够做用于经过使用其命令登陆的 shell 会话,在会话终止时便结束限制,并不影响于其余shell 会话。ide

161512432.png

修改limits.conf配置文件生效
函数

[root@kumu ~]# ulimit -a         //查看当前配置文件ulimit全局系数测试

core file size          (blocks, -c) 0ui

data seg size           (kbytes, -d) unlimitedgoogle

scheduling priority             (-e) 0spa

file size               (blocks, -f) unlimited线程

pending signals                 (-i) 1829

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

[root@kumu ~]# vim /etc/security/limits.conf

[root@kumu ~]# grep '^*' /etc/security/limits.conf

*       soft    nproc       10240

*       hard    nproc       10240

*       soft    nofile      10240

*       hard    nofile      10240

[root@kumu ~]#

退出当前用户,从新登陆便可让以前修改的limits生效

[root@kumu ~]# ulimit -n

10240

[root@kumu ~]# ulimit -u         //发现nproc并无像nofile同样而改变

1024

[root@kumu ~]#

经google搜索获知,RHEL6下引入了配置文件/etc/security/limits.d/90-nproc.conf


[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

*soft    nproc     1024

[root@kumu ~]#

咱们修改这个文件尝试是否由于该文件影响,修改以下

[root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf

[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

#*soft    nproc     1024

*soft    nproc    65535

[root@kumu ~]#

退出当前用户,从新登陆便可让以前修改的limits生效,执行以下命令发现修改为功

[root@kumu ~]# ulimit -u

10240

[root@kumu ~]# ulimit -n

10240

[root@kumu ~]#

由此可知,若是要修改配置文件limits.conf中的nproc限制上限是受文件/etc/security/limits.d/90-nproc.confnproc值大小制约的,可是shell终端下是不受制约的

另外笔者猜测,若是使用*号让全局用户生效是受文件/etc/security/limits.d/90-nproc.confnproc值大小制约的,而若是仅仅是针对某个用户,那么就不受该文件nproc值大小的影响

[root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf   //恢复系统默认设置

[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

*soft    nproc     1024

#*soft    nproc    65535

[root@kumu ~]# vim /etc/security/limits.conf       //只针对某个用户测试(这里使用root)

[root@kumu ~]# grep '^root' /etc/security/limits.conf

root        soft    nproc       10240

root        hard    nproc       10240

[root@kumu ~]#

退出当前用户,从新登陆便可让以前修改的limits生效,执行以下命令发现修改为功

[root@kumu ~]# ulimit -u

10240

[root@kumu ~]# ulimit -n

10240

[root@kumu ~]#

===============================================================================

先读/etc/security/limits.conf,若是/etc/security/limits.d/目录下还有配置文件的话,也读进来,一块儿分析。
这就意味/etc/security/limits.d/里面的文件里面的配置会覆盖/etc/security/limits.conf的配置。

读取/etc/security/limits.d/目录下文件的函数,从名字就能够猜出,是遍历,文件名的数字起到顺序的做用。

到此就解释了文件名90-nproc.conf的做用。

======================================================================================================

深度探究ulimit noproc请参考下面连接:

http://csrd.aliapp.com/?p=1760

是淘宝的褚霸写的,我以为写得真心不错,能够深度探究一下;

======================================================================================================

相关文章
相关标签/搜索