ulimit 的簡介及常用參數
ulimit:顯示(或設置)用戶可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程序在運行過程中使用的系統資源不超過相應的軟限制,任何的超越都導致進程的終止。
參數 描述 ulimited 不限制用戶可以使用的資源,但本設置對可打開的最大文件數(max open files) 和可同時運行的最大進程數(max user processes)無效 -a 列出所有當前資源極限 -b 最大套接字緩沖區大小 -c 設置core文件的最大值.單位:blocks -d 設置一個進程的數據段的最大值.單位:kbytes -f Shell 創建文件的文件大小的最大值,單位:blocks -h 指定設置某個給定資源的硬極限。如果用戶擁有 root 用戶權限,可以增大硬極限。任何用戶均可減少硬極限 -k 可以分配的最大 kqueue 數 -i 待處理信號的最大數量 -l 可以鎖住的物理內存的最大值 -m 可以使用的常駐內存的最大值,單位:kbytes -n 每個進程可以同時打開的最大文件數 -p 設置管道的最大值,單位為block,1block=512bytes -s 指定堆棧的最大值:單位:kbytes,Java程序需要適當的設置大一點 -S 指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標志均未指定,極限適用於以上二者 -t 指定每個進程所使用的秒數,單位:seconds -u 單個用戶可用的最大進程數 -v 進程可用的最大虛擬內存量,單位:kbytes -x 文件鎖的最大數量 -T 最大線程數
l臨時生效
ulimit -u 10240 # 用戶的最大進程數 ulimit -n 4096 #每個進程可打開的文件數 ulimit -d unlimited #數據段長度 ulimit -m unlimited #最大內存大小 ulimit -s unlimited #堆棧大小 ulimit -t unlimited #CPU 時間 ulimit -v unlimited #虛擬內存
永久生效
修改所有 linux 用戶的環境變量文件
vi /etc/profile.d/ulimit.sh # ~/.bashrc ulimit -u 10000 ulimit -n 4096 ulimit -d unlimited ulimit -m unlimited ulimit -s unlimited ulimit -t unlimited ulimit -v unlimited
修改配置文件
# vi /etc/security/limits.conf #<domain> <type> <item> <value> * - core <value> * - data <value> * - priority <value> * - fsize <value> * soft sigpending <value> eg:57344 * hard sigpending <value> eg:57444 * - memlock <value> * - nofile <value> eg:1024 * - msgqueue <value> eg:819200 * - locks <value> * soft core <value> * hard nofile <value> @<group> hard nproc <value> <user> soft nproc <value> %<group> hard nproc <value> <user> hard nproc <value> @<group> - maxlogins <value> <user> hard cpu <value> <user> soft cpu <value> <user> hard locks <value>
<domain>可以是以下值
:
用戶名 組名,帶有@group語法 通配符*,用於默認條目 通配符%,也可以與%group語法一起使用,用於maxlogin限制
<type>
可以有兩個值:
soft:用於執行軟限制 hard:用於執行硬限制
<item>
可以是以下之一
core- 限制核心文件大小 (KB) data- 最大數據大小 (KB) fsize- 最大文件大小 (KB) memlock- 最大鎖定內存地址空間 (KB) nofile- 最大打開文件數 rss- 最大駐留集大小 (KB) stack- 最大堆棧大小 (KB) cpu- 最大 CPU 時間 (MIN) nproc- 最大進程數(見下面的注釋) as- 地址空間限制 (KB) maxlogins- 此用戶的最大登錄次數 maxsyslogins- 系統上的最大登錄數 priority- 運行用戶進程的優先級 locks- 用戶可以持有的最大文件鎖數 sigpending- 掛起信號的最大數量 msgqueue- POSIX 消息隊列使用的最大內存(字節) nice- 允許提升到值的最大優先級:[-20, 19] rtprio- 最大實時優先級
注意事項
在 /etc/security/limits.conf 中設置 nproc 在 Red Hat Enterprise Linux 中無效,要在/etc/security/limits.d/90-nproc.conf文件中修改。