关于RHEL6中ulimit的nproc限制

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

修改limits.conf配置文件生效

  1. [root@kumu ~]# ulimit -a            //查看当前配置文件ulimit全局系数 
  2. core file size          (blocks, -c) 0 
  3. data seg size           (kbytes, -d) unlimited 
  4. scheduling priority             (-e) 0 
  5. file size               (blocks, -f) unlimited 
  6. pending signals                 (-i) 1829 
  7. max locked memory       (kbytes, -l) 64 
  8. max memory size         (kbytes, -m) unlimited 
  9. open files                      (-n) 1024 
  10. pipe size            (512 bytes, -p) 8 
  11. POSIX message queues     (bytes, -q) 819200 
  12. real-time priority              (-r) 0 
  13. stack size              (kbytes, -s) 10240 
  14. cpu time               (seconds, -t) unlimited 
  15. max user processes              (-u) 1024 
  16. virtual memory          (kbytes, -v) unlimited 
  17. file locks                      (-x) unlimited 
  18. [root@kumu ~]# vim /etc/security/limits.conf  
  19. [root@kumu ~]# grep '^*' /etc/security/limits.conf 
  20. *       soft    nproc       10240 
  21. *       hard    nproc       10240 
  22. *       soft    nofile      10240 
  23. *       hard    nofile      10240 
  24. [root@kumu ~]# 

 

退出当前用户,重新登录即可让之前修改的limits生效

  1. [root@kumu ~]# ulimit -n 
  2. 10240 
  3. [root@kumu ~]# ulimit -u            //发现nproc并没有像nofile一样而改变 
  4. 1024 
  5. [root@kumu ~]# 

 

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

(参见了@杨德华Devin 文章redhat5 和redhat6 root用户不同的ulimits

  1. [root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf  
  2. # Default limit for number of user's processes to prevent 
  3. # accidental fork bombs. 
  4. # See rhbz #432903 for reasoning. 
  5.  
  6. *          soft    nproc     1024 
  7. [root@kumu ~]# 

 

我们修改这个文件尝试是否因为该文件影响,修改如下

  1. [root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf  
  2. [root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf  
  3. # Default limit for number of user's processes to prevent 
  4. # accidental fork bombs. 
  5. # See rhbz #432903 for reasoning. 
  6.  
  7. #*          soft    nproc     1024 
  8. *          soft    nproc    65535  
  9. [root@kumu ~]# 

退出当前用户,重新登录即可让之前修改的limits生效,执行如下命令发现修改成功

  1. [root@kumu ~]# ulimit -u   
  2. 10240   
  3. [root@kumu ~]# ulimit -n   
  4. 10240   
  5. [root@kumu ~]#  

 

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

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

  1. [root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf   //恢复系统默认设置 
  2. [root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf  
  3. # Default limit for number of user's processes to prevent 
  4. # accidental fork bombs. 
  5. # See rhbz #432903 for reasoning. 
  6.  
  7. *          soft    nproc     1024 
  8. #*          soft    nproc    65535  
  9. [root@kumu ~]# vim /etc/security/limits.conf        //只针对某个用户测试(这里使用root) 
  10. [root@kumu ~]# grep '^root' /etc/security/limits.conf  
  11. root        soft    nproc       10240 
  12. root        hard    nproc       10240 
  13. [root@kumu ~]# 

 

退出当前用户,重新登录即可让之前修改的limits生效,执行如下命令发现修改成功

  1. [root@kumu ~]# ulimit -u 
  2. 10240 
  3. [root@kumu ~]# ulimit -n 
  4. 10240 
  5. [root@kumu ~]# 

笔者之前猜想正确,即只有当使用*号让全局用户生效的时候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.confnproc值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件nproc值大小的影响。

posted @ 2012-12-16 16:26  枯木-Linux  阅读(1624)  评论(0编辑  收藏  举报