linux下進程資源的限制——struct rlimit詳解

一、Resouce limit
在Linux系統中,Resouce limit指在一個進程的執行過程中,它所能得到的資源的限制,比如進程的core file的最大值,虛擬內存的最大值等。

soft limit 和 hard limit:

  • soft limit是指內核所能支持的資源上限。比如對於RLIMIT_NOFILE(一個進程能打開的最大文件數,內核默認是1024),soft limit最大也只能達到1024。對於RLIMIT_CORE(core文件的大小,內核不做限制),soft limit最大能是unlimited。
  • hard limit在資源中只是作爲soft limit的上限。當你設置hard limit後,你以後設置的soft limit只能小於hard limit。要說明的是,hard limit只針對非特權進程,也就是進程的有效用戶ID(effective user ID)不是0的進程。具有特權級別的進程(具有屬性CAP_SYS_RESOURCE),soft limit則只有內核上限。

下面我們可以從以下兩條指令做對比:
這裏寫圖片描述

這裏寫圖片描述

二、struct rlimit介紹:
struct rlimit{
rlim rlim ur; /* 軟限制:當前限制 */
rlim rlim ax; /* 硬限制:rlimcur的最大值 */
};
ulimit用法:
這裏寫圖片描述
參數詳解:
-H 設置硬資源限制.
-S 設置軟資源限制.
-a 顯示當前所有的資源限制.
-c size:設置core文件的最大值.單位:blocks
-d size:設置數據段的最大值.單位:kbytes
-f size:設置創建文件的最大值.單位:blocks
-l size:設置在內存中鎖定進程的最大值.單位:kbytes
-m size:設置可以使用的常駐內存的最大值.單位:kbytes
-n size:設置內核可以同時打開的文件描述符的最大值.單位:n
-p size:設置管道緩衝區的最大值.單位:kbytes
-s size:設置堆棧的最大值.單位:kbytes
-t size:設置CPU使用時間的最大上限.單位:seconds
-v size:設置虛擬內存的最大值.單位:kbytes
-u <程序數目> 用戶最多可開啓的程序數目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章