關于RHEL6中ulimit的nproc限制

ulimit 用于限制 shell 啟動進程所占用的資源,支持以下各種類型的限制:所創建的內核文件的大小、進程數據塊的大小、Shell 進程創建文件的大小、內存鎖住的大小、常駐內存集的大小、打開文件描述符的數量、分配堆棧的最大大小、CPU 時間、單個用戶的最大線程數、Shell 進程所能使用的最大虛擬內存。同時,它支持硬資源和軟資源的限制。

Linux文件描述符可參見筆者之前的文章:http://kumu1988.blog.51cto.com/4075018/1086210

關于RHEL6中ulimit的nproc限制,RHEL6和RHEL5還是有一些細節上的區別的:

當前shell下更改用戶可打開進程數 

作為臨時限制,ulimit可以作用于通過使用其命令登錄的 shell 會話,在會話終止時便結束限制,并不影響于其他shell 會話。

關于RHEL6中ulimit的nproc限制

修改limits.conf配置文件生效

[root@kumu ~]# ulimit -a         //查看當前配置文件ulimit全局系數

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

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

(參見了@楊德華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 -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 ~]#

 

筆者之前猜想正確,即只有當使用*號讓全局用戶生效的時候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.confnproc值大小制約的,而如果僅僅是針對某個用戶,那么就不受該文件nproc值大小的影響。

原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/52952

(0)
wencxwencx
上一篇 2016-10-19 21:06
下一篇 2016-10-19 21:42

相關推薦

  • N25第一周作業

    一.計算機基礎知識     1.計算機是什么?         計算機是一種能夠按照指令對各種信息進行自動加工和處理的電子設備     2.計算機的組成?       &…

    Linux干貨 2016-12-06
  • MySQL主從復制:半同步、異步

            MySQL主從復制:半同步、異步 前言 如何對MySQL進行擴展? MySQL Replication WorkFlow MySQL主從復制模式 實戰演練 MySQL異步復制實現 MySQL半同步復制實現 實驗中的思考 總結 mysql 前言 本篇我們介紹MySQ…

    Linux干貨 2016-04-28
  • DNS詳解

    概述     互聯網訪問絕大多數都是基于域名的訪問,互聯網訪問的基礎是基于IP來實現的,因此,需要有一種將域名解析成IP的機制,讓用戶在利用域名訪問時,自動將域名轉換成為對應的IP,這就是DNS的功能,本章將介紹一些DNS相關的內容,具體分為:     1、DNS的基礎概念 &n…

    Linux干貨 2016-10-08
  • shell腳本編程基礎之二(if、case、for、while、until、continue、break語句使用)

    在shell腳本編程中,我們可以根據命令的狀態結果,判斷要不要執行下一步,但是有時候要判斷的問題不止一個,甚至對問題本身都要做判斷;同時問題的結果有時也不止一個,這時要借助簡單的邏輯與和邏輯或,就顯得很無力;要完成復雜的任務,需要借助一定的流程控制:順序執行、選擇執行、循環執行、同時在腳本執行過程中,有用戶交互輸入的需; if語句 case語句 for語句 …

    Linux干貨 2016-08-21
  • rsync+inotify實現數據的實時同步更新

    ? rsync可以實現觸發式的文件同步,但是通過crontab守護進程方式進行觸發,同步的數據和實際數據會有差異,而inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,這樣就可以解決同步數據的實時性問題。 一、rsync的優點與不足 rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的…

    2018-01-06
  • linux任務管理與計劃

    linux系統作業控制的命令:     job(作業):一個作業通常包含多個命令(也有可能只包含一個),聯合起來由單個小程序組合,完成復雜任務,對Linux而言作業有兩種;前臺作業和后臺作業        前臺作業(forgroud):通過終端啟動,且啟動后會…

    Linux干貨 2016-09-13
欧美性久久久久