ulimit

控制shell程序的資源

補充說明

ulimit命令 用來限制系統用戶對shell資源的訪問。如果不懂什麼意思,下面一段內容可以幫助你理解:

假設有這樣一種情況,當一臺 Linux 主機上同時登陸了 10 個人,在系統資源無限制的情況下,這 10 個用戶同時打開了 500 個文檔,而假設每個文檔的大小有 10M,這時系統的內存資源就會受到巨大的挑戰。

而實際應用的環境要比這種假設複雜的多,例如在一個嵌入式開發環境中,各方面的資源都是非常緊缺的,對於開啓文件描述符的數量,分配堆棧的大 小,CPU 時間,虛擬內存大小,等等,都有非常嚴格的要求。資源的合理限制和分配,不僅僅是保證系統可用性的必要條件,也與系統上軟件運行的性能有着密不可分的聯 系。這時,ulimit 可以起到很大的作用,它是一種簡單並且有效的實現資源限制的方式。

ulimit 用於限制 shell 啓動進程所佔用的資源,支持以下各種類型的限制:所創建的內核文件的大小、進程數據塊的大小、Shell 進程創建文件的大小、內存鎖住的大小、常駐內存集的大小、打開文件描述符的數量、分配堆棧的最大大小、CPU 時間、單個用戶的最大線程數、Shell 進程所能使用的最大虛擬內存。同時,它支持硬資源和軟資源的限制。

作爲臨時限制,ulimit 可以作用於通過使用其命令登錄的 shell 會話,在會話終止時便結束限制,並不影響於其他 shell 會話。而對於長期的固定限制,ulimit 命令語句又可以被添加到由登錄 shell 讀取的文件中,作用於特定的 shell 用戶。

語法

1ulimit(選項)

選項

 1-a:顯示目前資源限制的設定;
 2-c <core文件上限>:設定core文件的最大值,單位爲區塊;
 3-d <數據節區大小>:程序數據節區的最大值,單位爲KB;
 4-e 默認進程優先級, 值越小優先級越高
 5-f <文件大小>:shell所能建立的最大文件,單位爲區塊;
 6-H:設定資源的硬性限制,也就是管理員所設下的限制;
 7-m <內存大小>:指定可使用內存的上限,單位爲KB;
 8-n <文件數目>:指定同一時間最多可開啓的文件數;
 9-p <緩衝區大小>:指定管道緩衝區的大小,單位512字節;
10-s <堆疊大小>:指定堆疊的上限,單位爲KB;
11-S:設定資源的彈性限制;
12-t <CPU時間>:指定CPU使用時間的上限,單位爲秒;
13-u <程序數目>:用戶最多可開啓的程序數目;
14-v <虛擬內存大小>:指定可使用的虛擬內存上限,單位爲KB。

實例

 1[root@localhost ~]# ulimit -a
 2core file size          (blocks, -c) 0           #core文件的最大值爲100 blocks。
 3data seg size           (kbytes, -d) unlimited   #進程的數據段可以任意大。
 4scheduling priority             (-e) 0
 5file size               (blocks, -f) unlimited   #文件可以任意大。
 6pending signals                 (-i) 98304       #最多有98304個待處理的信號。
 7max locked memory       (kbytes, -l) 32          #一個任務鎖住的物理內存的最大值爲32KB。
 8max memory size         (kbytes, -m) unlimited   #一個任務的常駐物理內存的最大值。
 9open files                      (-n) 1024        #一個任務最多可以同時打開1024的文件。
10pipe size            (512 bytes, -p) 8           #管道的最大空間爲4096字節。
11POSIX message queues     (bytes, -q) 819200      #POSIX的消息隊列的最大值爲819200字節。
12real-time priority              (-r) 0
13stack size              (kbytes, -s) 10240       #進程的棧的最大值爲10240字節。
14cpu time               (seconds, -t) unlimited   #進程使用的CPU時間。
15max user processes              (-u) 98304       #當前用戶同時打開的進程(包括線程)的最大個數爲98304。
16virtual memory          (kbytes, -v) unlimited   #沒有限制進程的最大地址空間。
17file locks                      (-x) unlimited   #所能鎖住的文件的最大個數沒有限制。

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: