關於 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

是淘寶的褚霸寫的,我以爲寫得真心不錯,能夠深度探究一下;

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

相關文章
相關標籤/搜索