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,表示沒有限制。

表 1. ulimit 參數說明
選項 [options] 含義 例子
-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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM