解读RHEL 6中ulimit的nproc限制

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 限制内存、一证五号的限制解读,以便于您获取更多的相关知识。

时间: 2024-11-10 00:18:01

解读RHEL 6中ulimit的nproc限制的相关文章

RHCSA 系列(十三): 在 RHEL 7 中使用 SELinux 进行强制访问控制

在本系列的前面几篇文章中,我们已经详细地探索了至少两种访问控制方法:标准的 ugo/rwx 权限(RHCSA 系列(三): 如何管理 RHEL7 的用户和组) 和访问控制列表(RHCSA 系列(七): 使用 ACL(访问控制列表) 和挂载 Samba/NFS 共享). RHCSA 认证:SELinux 精要和控制文件系统的访问 尽管作为第一级别的权限和访问控制机制是必要的,但它们同样有一些局限,而这些局限则可以由安全增强 LinuxSecurity Enhanced Linux,简称为 SELi

RHCE 系列(五):如何在 RHEL 7 中管理系统日志(配置、轮换以及导入到数据库)

为了确保你的 RHEL 7 系统安全,你需要通过查看日志文件来监控系统中发生的所有活动.这样,你就可以检测到任何不正常或有潜在破坏的活动并进行系统故障排除或者其它恰当的操作. RHCE 考试 - 第五部分:使用 Rsyslog 和 Logrotate 管理系统日志 在 RHEL 7 中,rsyslogd 守护进程负责系统日志,它从 /etc/rsyslog.conf(该文件指定所有系统日志的默认路径)和 /etc/rsyslog.d 中的所有文件(如果有的话)读取配置信息. Rsyslogd 配

RHEL 7中防火墙的配置和使用方法_Linux

RHEL7 中使用了firewalld代替了原来的iptables,操作设置和原来有点不同: 查看防火墙状态:systemctl status firewalld 启动防火墙:systemctl start firewalld 停止防火墙:systemctl stop firewalld 防火墙中的一切都与一个或者多个区域相关联,下面对各个区进行说明: Zone Description ----------------------------------------------------- d

RHCSA 系列(十四): 在 RHEL 7 中设置基于 LDAP 的认证

在这篇文章中,我们将首先罗列一些 LDAP 的基础知识(它是什么,它被用于何处以及为什么会被这样使用),然后向你展示如何使用 RHEL 7 系统来设置一个 LDAP 服务器以及配置一个客户端来使用它达到认证的目的. RHCSA 系列:设置 LDAP 服务器及客户端认证 – Part 14 正如你将看到的那样,关于认证,还存在其他可能的应用场景,但在这篇指南中,我们将只关注基于 LDAP 的认证.另外,请记住,由于这个话题的广泛性,在这里我们将只涵盖它的基础知识,但你可以参考位于总结部分中列出的文

详细解读C++编程中的匿名类类型和位域_C 语言

匿名类类型类可以是匿名的 - 也就是说,可以在没有 identifier 的情况下声明类.在将类名称替换为 typedef 名称时,这会很有用,如下所示: typedef struct { unsigned x; unsigned y; } POINT; 注意 上面示例中显示的匿名类的用法对于保留与现有 C 代码的兼容性很有用.在某些 C 代码中,将 typedef 与匿名结构结合使用是很普遍的. 如果您希望对类成员的引用就像它未包含在独立类中的情况一样出现,则匿名类也很有用,如下所示: str

解读C++编程中派生类的构成和创建_C 语言

C++派生类的构成 派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分.从基类继承的成员体现了派生类从基类继承而获得的共性,而新增加的成员体现了派生类的个性.正是这些新增加的成员体现了派生类与基类的不同,体现了不同派生类之间的区别. 在基类中包括数据成员和成员函数 (或称数据与方法)两部分,派生类分为两大部分:一部分是从基类继承来的成员,另一部分是在声明派生类时增加的部分.每一部分均分别包括数据成员和成员函数. 实际上,并不是把基类的成员和派生类自己增加的成员简单地加在一起就成为派生

详细解读Android系统中的application标签_Android

< application /> :应用的声明. 这个元素包含了子元素,这些子元素声明了应用的组件,元素的属性将会影响应用下的所有组件.很多属性为组件设置了默认值,有些属性设置了全局值并且不能被组件修改. <application>的子节点描述了应用所包含的组件,它的属性会影响到它所有的子节点组件.icon/lable/permission 等 属性是给子节点组件设置一个默认值,可以被复写.而 debuggable/enabled 等 属性是作为整个application的全局属性

RHEL 7 中 systemctl 的用法(替代service 和 chkconfig)

1.systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体.可以使用它永久性或只在当前会话中启用/禁用服务. systemctl可以列出正在运行的服务状态,如图: systemd-cgls以树形列出正在运行的进程,它可以递归显示控制组内容.如图: 2.如何启动/关闭.启用/禁用服务? 启动一个服务:systemctl start postfix.service关闭一个服务:systemctl stop postfix.service

浅谈RHEL 7中systemctl 的用法(替代service和chkconfig)_Linux

1.systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体.可以使用它永久性或只在当前会话中启用/禁用服务. systemctl可以列出正在运行的服务状态,如图: systemd-cgls以树形列出正在运行的进程,它可以递归显示控制组内容.如图: 2.如何启动/关闭.启用/禁用服务? 启动一个服务:systemctl start postfix.service 关闭一个服务:systemctl stop postfix.servic