Linux命令 ulimit - 控制shell程序的資源

2022-03-22 16:55 更新

ulimit

控制shell程序的資源

補(bǔ)充說明

ulimit命令 用來(lái)限制系統(tǒng)用戶對(duì)shell資源的訪問。如果不懂什么意思,下面一段內(nèi)容可以幫助你理解:

假設(shè)有這樣一種情況,當(dāng)一臺(tái) Linux 主機(jī)上同時(shí)登陸了 10 個(gè)人,在系統(tǒng)資源無(wú)限制的情況下,這 10 個(gè)用戶同時(shí)打開了 500 個(gè)文檔,而假設(shè)每個(gè)文檔的大小有 10M,這時(shí)系統(tǒng)的內(nèi)存資源就會(huì)受到巨大的挑戰(zhàn)。

而實(shí)際應(yīng)用的環(huán)境要比這種假設(shè)復(fù)雜的多,例如在一個(gè)嵌入式開發(fā)環(huán)境中,各方面的資源都是非常緊缺的,對(duì)于開啟文件描述符的數(shù)量,分配堆棧的大 小,CPU 時(shí)間,虛擬內(nèi)存大小,等等,都有非常嚴(yán)格的要求。資源的合理限制和分配,不僅僅是保證系統(tǒng)可用性的必要條件,也與系統(tǒng)上軟件運(yùn)行的性能有著密不可分的聯(lián) 系。這時(shí),ulimit 可以起到很大的作用,它是一種簡(jiǎn)單并且有效的實(shí)現(xiàn)資源限制的方式。

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

作為臨時(shí)限制,ulimit 可以作用于通過使用其命令登錄的 shell 會(huì)話,在會(huì)話終止時(shí)便結(jié)束限制,并不影響于其他 shell 會(huì)話。而對(duì)于長(zhǎng)期的固定限制,ulimit 命令語(yǔ)句又可以被添加到由登錄 shell 讀取的文件中,作用于特定的 shell 用戶。

語(yǔ)法

ulimit(選項(xiàng))

選項(xiàng)

-a:顯示目前資源限制的設(shè)定;
-c <core文件上限>:設(shè)定core文件的最大值,單位為區(qū)塊;
-d <數(shù)據(jù)節(jié)區(qū)大小>:程序數(shù)據(jù)節(jié)區(qū)的最大值,單位為KB;
-e 默認(rèn)進(jìn)程優(yōu)先級(jí), 值越小優(yōu)先級(jí)越高
-f <文件大小>:shell所能建立的最大文件,單位為區(qū)塊;
-H:設(shè)定資源的硬性限制,也就是管理員所設(shè)下的限制;
-m <內(nèi)存大小>:指定可使用內(nèi)存的上限,單位為KB;
-n <文件數(shù)目>:指定同一時(shí)間最多可開啟的文件數(shù);
-p <緩沖區(qū)大小>:指定管道緩沖區(qū)的大小,單位512字節(jié);
-s <堆疊大小>:指定堆疊的上限,單位為KB;
-S:設(shè)定資源的彈性限制;
-t <CPU時(shí)間>:指定CPU使用時(shí)間的上限,單位為秒;
-u <程序數(shù)目>:用戶最多可開啟的程序數(shù)目;
-v <虛擬內(nèi)存大小>:指定可使用的虛擬內(nèi)存上限,單位為KB。

實(shí)例

[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 0           #core文件的最大值為100 blocks。
data seg size           (kbytes, -d) unlimited   #進(jìn)程的數(shù)據(jù)段可以任意大。
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited   #文件可以任意大。
pending signals                 (-i) 98304       #最多有98304個(gè)待處理的信號(hào)。
max locked memory       (kbytes, -l) 32          #一個(gè)任務(wù)鎖住的物理內(nèi)存的最大值為32KB。
max memory size         (kbytes, -m) unlimited   #一個(gè)任務(wù)的常駐物理內(nèi)存的最大值。
open files                      (-n) 1024        #一個(gè)任務(wù)最多可以同時(shí)打開1024的文件。
pipe size            (512 bytes, -p) 8           #管道的最大空間為4096字節(jié)。
POSIX message queues     (bytes, -q) 819200      #POSIX的消息隊(duì)列的最大值為819200字節(jié)。
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240       #進(jìn)程的棧的最大值為10240字節(jié)。
cpu time               (seconds, -t) unlimited   #進(jìn)程使用的CPU時(shí)間。
max user processes              (-u) 98304       #當(dāng)前用戶同時(shí)打開的進(jìn)程(包括線程)的最大個(gè)數(shù)為98304。
virtual memory          (kbytes, -v) unlimited   #沒有限制進(jìn)程的最大地址空間。
file locks                      (-x) unlimited   #所能鎖住的文件的最大個(gè)數(shù)沒有限制。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)