ulimit 用於限制 shell 啟動進程所占用的資源,支持以下各種類型的限制:所創建的內核文件的大小、進程數據塊的大小、Shell 進程創建文件的大小、內存鎖住的大小、常駐內存集的大小、打開文件描述符的數量、分配堆棧的最大大小、CPU 時間、單個用戶的最大線程數、Shell 進程所能使用的最大虛擬內存。同時,它支持硬資源和軟資源的限制。
Linux文件描述符可參見筆者之前的文章:http://www.linuxidc.com/Linux/2012-08/68607.htm
關於RHEL6中ulimit的nproc限制,RHEL6和RHEL5還是有一些細節上的區別的:
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}當前shell下更改用戶可打開進程數
作為臨時限制,ulimit可以作用於通過使用其命令登錄的 shell 會話,在會話終止時便結束限制,並不影響於其他 shell 會話。
修改limits.conf配置文件生效
[root@ www.linuxidc.com ~]# 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@ www.linuxidc.com ~]# vim /etc/security/limits.conf
[root@ www.linuxidc.com ~]# grep '^*' /etc/security/limits.conf
* soft nproc 10240
* hard nproc 10240
* soft nofile 10240
* hard nofile 10240
[root@ www.linuxidc.com ~]#
退出當前用戶,重新登錄即可讓之前修改的limits生效
[root@ www.linuxidc.com ~]# ulimit -n
10240
[root@ www.linuxidc.com ~]# ulimit -u //發現nproc並沒有像nofile一樣而改變
1024
[root@ www.linuxidc.com ~]#
獲知,RHEL6下引入了配置文件/etc/security/limits.d/90-nproc.conf