什么是ulimit?
ulimit是一個可以設置或者匯報當前用戶資源限制的命令。使用ulimit命令需要有管理員權限,它只能在允許使用shell進行控制的系統中使用。也就是說它已經被嵌入到shell當中了。
基本使用
ulimit
如輸出所示,unlimited,當前的用戶有無限的資源可以訪問。意味着,當前用戶可以消耗當前系統支持的所有資源。
ulimit -a
-a參數可以展示出詳細的參數,即我們可以對什么資源做限制。這里的限制有兩種類型:soft & hard。hard資源限制意味着是物理限制;soft資源限制是由用戶進行管理的,soft的最大值由hard來限制。
系統資源被定義在了/etc/security/limits.conf的文件當中,當我們使用ulimit的時候,就是在使用這個文件里定義的值。
查看其他資源限制
ulimit -c # 查看core file文件的最大值
ulimit -d # 查看數據段的最大值
ulimit -e # 查看當前用戶的最大調度優先級
ulimit -s # 當前用戶的最大棧大小
ulimit -u # 當前用戶的最大進程數
ulimit -v # 查看虛擬內存的大小
ulimit -b # 查看socket buffer的大小
ulimit -t # 查看每個進程允許運行的時間
ulimit -n # 查看一個進程可以最多有多少文件描述符
其他命令可通過--help查看
設置資源限制
我們通過上面的內容了解到了怎么去查看當前系統中的一些資源限制的值。現在就來看一下怎么去修改它們。
注意:對於hard限制,我們需要有root權限pip
首先進入limits.conf文件
vim /etc/security/limits.conf
按照如下的格式編輯文件
<domain> <type> <item> <value>
-
domain可以是下面的值
- 一個特定的用戶
- 一個組
- wildcard(* and %)
-
type可以是下面的值
- soft 限制
- hard 限制
- item可以是下面的值
- core:core文件大小(KB)
- data:最大數據大小(KB)
- fsize:最大文件大小(KB)
- memlock:最大locked-in-memory地址空間(KB)
- nofile:最大的open files的數目
- rss:最大的resident set大小(KB)
- stack:最大棧大小(KB)
- cpu:最大cpu時間(分鍾)
- nproc:最大進程數
- as:地址空間的限制(KB)
- maxlogins:當前用戶的最大登陸數目
- maxsyslogins:當前系統的最大登陸數目
- priority:跑用戶進程的優先級
- locks:用戶可以持有的file locks的數目
- sigpending:最大的pending signals的數目
- value就是具體的整數值
參考文獻
本文內容翻譯自