# ulimit Linux ulimit命令用於控制shell程式的資源。 ```shell [email protected] 10:41:17 [pwd:~]# ulimit --help ulimit: ulimit [-SHabcdefiklmnpqrstuvxPT ...
ulimit
Linux ulimit命令用於控制shell程式的資源。
[email protected] 10:41:17 [pwd:~]# ulimit --help
ulimit: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
Modify shell resource limits.
Provides control over the resources available to the shell and processes
it creates, on systems that allow such control.
Options:
-S use the `soft' resource limit. 設置軟資源限制,設置後可以增加,但是不能超過硬資源設置。 ulimit – Sn 32;限制軟資源,32 個文件描述符。
-H use the `hard' resource limit. 設置硬資源限制,一旦設置不能增加。 ulimit – Hs 64;限制硬資源,線程棧大小為 64K。
-a all current limits are reported. #顯示當前所有的 limit 信息。
-b the socket buffer size
-c the maximum size of core files created #最大的 core 文件的大小, 以 blocks 為單位。 ulimit – c unlimited; 對生成的 core 文件的大小不進行限制。
-d the maximum size of a process's data segment #進程最大的數據段的大小,以 Kbytes 為單位。 ulimit -d unlimited;對進程的數據段大小不進行限制。
-e the maximum scheduling priority (`nice') #可執行程式的優先順序,表示進程對 CPU 資源的需求程度,較小的 nice 值表示更高的優先順序。通過增加 nice 值,進程會變得更加"友好",對 CPU 的需求較低,給其他進程更多的執行時間。
-f the maximum size of files written by the shell and its children #進程可以創建文件的最大值,以 blocks 為單位。 ulimit – f 2048;限制進程可以創建的最大文件大小為 2048 blocks。
-i the maximum number of pending signals
-k the maximum number of kqueues allocated for this process
-l the maximum size a process may lock into memory #最大可加鎖記憶體大小,以 Kbytes 為單位。 ulimit – l 32;限制最大可加鎖記憶體大小為 32 Kbytes。
-m the maximum resident set size #最大記憶體大小,以 Kbytes 為單位。 ulimit – m unlimited;對最大記憶體不進行限制。
-n the maximum number of open file descriptors #可以打開最大文件描述符的數量。 ulimit – n 128;限制最大可以使用 128 個文件描述符。
-p the pipe buffer size #管道緩衝區的大小,以 Kbytes 為單位。 ulimit – p 512;限制管道緩衝區的大小為 512 Kbytes。
-q the maximum number of bytes in POSIX message queues
-r the maximum real-time scheduling priority
-s the maximum stack size #線程棧大小,以 Kbytes 為單位。 ulimit – s 512;限制線程棧的大小為 512 Kbytes。
-t the maximum amount of cpu time in seconds #最大的 CPU 占用時間,以秒為單位。 ulimit – t unlimited;對最大的 CPU 占用時間不進行限制。
-u the maximum number of user processes #用戶最大可用的進程數。 ulimit – u 64;限制用戶最多可以使用 64 個進程。
-v the size of virtual memory #進程最大可用的虛擬記憶體,以 Kbytes 為單位。 ulimit – v 200000;限制最大可用的虛擬記憶體為 200000 Kbytes。
-x the maximum number of file locks # 進程的最大文件鎖定數。
-P the maximum number of pseudoterminals # 進程可以創建的偽終端的最大數量。
-T the maximum number of threads
Not all options are available on all platforms.
If LIMIT is given, it is the new value of the specified resource; the
special LIMIT values `soft', `hard', and `unlimited' stand for the
current soft limit, the current hard limit, and no limit, respectively.
Otherwise, the current value of the specified resource is printed. If
no option is given, then -f is assumed.
Values are in 1024-byte increments, except for -t, which is in seconds,
-p, which is in increments of 512 bytes, and -u, which is an unscaled
number of processes.
Exit Status:
Returns success unless an invalid option is supplied or an error occurs.
ulimit 未指定預設修改的是軟限制還是硬限制?
使用ulimit -n 65535
命令將文件描述符(file descriptor)的限制設置為65535時,預設情況下會同時修改軟限制和硬限制。
需要註意的是,非特權用戶只能降低軟限制或將軟限制設置為不超過當前硬限制的值。只有特權用戶(例如超級用戶)才能增加或降低硬限制。
ulimit -a 各項含義
[email protected] 10:41:25 [pwd:~]# ulimit -a
#輸出的每一行由資源名字、(單位,ulimit命令的參數)、軟限制
core file size (blocks, -c) 0 #core文件的最大值為100 blocks,為0表示禁用核心轉儲文件的生成。
data seg size (kbytes, -d) unlimited #進程的數據段可以任意大
scheduling priority (-e) 0 #
file size (blocks, -f) unlimited # 文件可以任意大
pending signals (-i) 14820 #最多有2047個待處理的信號
max locked memory (kbytes, -l) 64 #一個任務鎖住的物理記憶體的最大值為64kB
max memory size (kbytes, -m) unlimited #一個任務的常駐物理記憶體的最大值
open files (-n) 65535 #一個任務最多可以同時打開65535個文件
pipe size (512 bytes, -p) 8 #管道的最大空間為512位元組
POSIX message queues (bytes, -q) 819200 #POSIX的消息隊列的最大值為819200位元組
real-time priority (-r) 0 #
stack size (kbytes, -s) 8192 #進程的棧的最大值為8192位元組
cpu time (seconds, -t) unlimited #進程使用的CPU時間
max user processes (-u) 10240 #當前用戶同時打開的進程的最大個數為10240
virtual memory (kbytes, -v) unlimited #沒有限制進程的最大地址空間
file locks (-x) unlimited #所能鎖住的文件的最大個數沒有限制
DM安裝部署需要修改哪些選項?
vim /etc/security/limits.conf
l1="dmdba soft nice 0" #預設情況下,進程的nice值為0,表示正常優先順序,沒有進行任何調整。與其他進程競爭CPU資源的機會相對均等。
l2="dmdba hard nice 0" #預設情況下,進程的nice值為0,表示正常優先順序,沒有進行任何調整。
l3="dmdba soft as unlimited" #虛擬記憶體的限制
l4="dmdba hard as unlimited"
l5="dmdba soft fsize unlimited" #文件大小限制
l6="dmdba hard fsize unlimited"
l7="dmdba soft nproc 131072" #最大進程數
l8="dmdba hard nproc 131072"
l9="dmdba soft nofile 131072" #最大打開文件描述符
l10="dmdba hard nofile 131072"
l11="dmdba soft core unlimited" #core文件最大大小
l12="dmdba hard core unlimited"
l13="dmdba soft data unlimited" #進程的數據段
l14="dmdba hard data unlimited"
#《DM INSTALL》文檔說明需要修改(數據段大小、文件大小、打開文件數大小、虛擬記憶體大小)
#未說明修改最大進程數和nice
臨時修改和永久修改
#臨時修改,只在此終端下有效
ulimit -d unlimited #進程的數據段
ulimit -f unlimited # 文件可以任意大
ulimit -n 131072 #最大打開文件描述符
ulimit -v unlimited #虛擬記憶體大小
#永久修改,重啟伺服器或者重新登錄生效
vim /etc/security/limits.conf