Linux ulimit命令

ulimit命令用來限制系統用戶對shell資源的訪問。

語法:

ulimit [-acdfHlmnpsStv] [size]

選項介紹:

-a 顯示當前所有的資源限制;

-c size: 設置core文件的最大值,單位:blocks;

-d size: 設置數據段的最大值,單位:kbytes;

-f size: 設置創建文件的最大值,單位:blocks;

-H: 設置硬件資源限制;

-l size: 設置在內存中鎖定進程的最大值,單位:kbytes;

-m size: 設置可以使用的常駐內存的最大值,單位:kbytes;

-n size: 設置內核可以同時打開的文件描述符的最大值;

-p size: 設置管道緩沖區的最大值,單位:kbytes;

-s size: 設置堆棧的最大值,單位:kbytes;

-S: 設置軟件資源限制;

-t size: 設置CPU使用時間的最大上限,單位:seconds;

-v size: 設置虛擬內存的最大值.單位:kbytes;

注意:size的值不一定要求是數字,可以是unlimited,表示沒有限制。

選項 含義 例子
-H 設置硬資源限制,一旦設置不能增加。 ulimit – Hs 64;限制硬資源,線程棧大小為 64K。
-S 設置軟資源限制,設置后可以增加,但是不能超過硬資源設置 ulimit – Sn 32;限制軟資源,32 個文件描述符。
-a 顯示當前所有的 limit 信息 ulimit – a;顯示當前所有的 limit 信息
-c 最大的 core 文件的大小, 以 blocks 為單位 ulimit – c unlimited; 對生成的 core 文件的大小不進行限制。
-d 進程最大的數據段的大小,以 Kbytes 為單位 ulimit -d unlimited;對進程的數據段大小不進行限制。
-f 進程可以創建文件的最大值,以 blocks 為單位 ulimit – f 2048;限制進程可以創建的最大文件大小為 2048 blocks。
-l 最大可加鎖內存大小,以 Kbytes 為單位 ulimit – l 32;限制最大可加鎖內存大小為 32 Kbytes
-m 最大內存大小,以 Kbytes 為單位 ulimit – m unlimited;對最大內存不進行限制
-n 可以打開最大文件描述符的數量 ulimit – n 128;限制最大可以使用 128 個文件描述符
-p 管道緩沖區的大小,以 Kbytes 為單位 ulimit – p 512;限制管道緩沖區的大小為 512 Kbytes
-s 線程棧大小,以 Kbytes 為單位 ulimit – s 512;限制線程棧的大小為 512 Kbytes
-t 最大的 CPU 占用時間,以秒為單位 ulimit – t unlimited;對最大的 CPU 占用時間不進行限制
-u 用戶最大可用的進程數 ulimit – u 64;限制用戶最多可以使用 64 個進程
-v 進程最大可用的虛擬內存,以 Kbytes 為單位 ulimit – v 200000;限制最大可用的虛擬內存為 200000 Kbytes

執行范例:

當你執行一個程序,發現Can’t open so many files類似的錯誤,則是因為你的程序打開的文件數超過系統默認的最大文件數。解決方案:

$ ulimit -n 20000
$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 20000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 16381
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ulimit命令限制資源的使用,設置文件在:
/etc/security/limits.conf

比如:
xok_la hard cpu 1
xok_la hard fsize 50000
xok_la hard memlock 1000
xok_la hard nofile 50
xok_la hard nproc 50

這種方式限制是可以的,他是基于用戶來限制的,可以限制內存,CPU占用時間,打開的文件數等等.前提是你要登陸到這個系統上.如果只是以這個用戶來單獨運行文件的話,就不行……

擴展閱讀:
Linux下進程最大文件數為1024。
通常一個c,c++的可執行文件出錯時,通過調core dump會快速定位到代碼出錯的位置。因此,你需要用ulimit -c xxx設置core文件最大值。默認為0。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容