ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。
Linux文件描述符可参见笔者之前的文章:http://kumu1988.blog.51cto.com/4075018/1086210
关于RHEL6中ulimit的nproc限制,RHEL6和RHEL5还是有一些细节上的区别的:
当前shell下更改用户可打开进程数
作为临时限制,ulimit可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。
修改limits.conf配置文件生效
[root@kumu ~]# ulimit -a //查看当前配置文件ulimit全局系数core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 1829max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 1024virtual memory (kbytes, -v) unlimitedfile 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 -n10240[root@kumu ~]# ulimit -u //发现nproc并没有像nofile一样而改变1024[root@kumu ~]#
经google搜索获知,RHEL6下引入了配置文件/etc/security/limits.d/90-nproc.conf
(参见了@杨德华Devin 文章redhat5 和redhat6 root用户不同的ulimits)
[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 -u10240[root@kumu ~]# ulimit -n10240[root@kumu ~]#
由此可知,如果要修改配置文件limits.conf中的nproc限制上限是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制约的,但是shell终端下是不受制约的
另外笔者猜想,如果使用*号让全局用户生效是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件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.confroot soft nproc 10240root hard nproc 10240[root@kumu ~]#
退出当前用户,重新登录即可让之前修改的limits生效,执行如下命令发现修改成功
[root@kumu ~]# ulimit -u
10240
[root@kumu ~]# ulimit -n
10240
[root@kumu ~]#
笔者之前猜想正确,即只有当使用*号让全局用户生效的时候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件nproc值大小的影响。
本文出自 “枯木的Linux专栏” 博客,请务必保留此出处http://kumu1988.blog.51cto.com/4075018/1091369
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, conf
, root
, security
, 大小
, 用户
, redhat6 1 上网问题
rhel6 3
ulimit nproc、ulimit与nproc的配置、rhel ulimit 无法生效、ulimit 限制内存、一证五号的限制解读,以便于您获取更多的相关知识。