每天一個 Linux 命令:ulimit 命令
1. 命令簡介
ulimit
屬 Shell
內建命令,用於查看或設置 Shell
以及通過 Shell
啓動的進程使用系統資源的上限。限制分爲軟限制(當前限制)和硬限制,其中硬限制是軟限制的上限值。如果應用程序在運行過程中使用的系統資源超過相應的軟限制,將導致進程的終止。
由於系統資源有限,比如開啓文件描述符的數量,進程堆棧的大小,CPU 時間,虛擬內存大小,等等,操作系統對每一個進程都有嚴格的限制。資源的合理限制和分配,不僅僅是保證系統可用性的必要條件,也與進程性能密不可分。這時,ulimit
可以起到很大的作用,它是一種簡單並且有效的實現資源限制的方式。
2. 命令格式
ulimit [-HSTabcdefilmnpqrstuvx [limit]]
其中,limit 是對指定類型資源的具體限制,參數 S 表示設置軟限制,H 表示設置硬限制,當都不指定時,表示同時設置軟限制和硬限制。
3. 選項說明
-H
設定資源的硬限制,只有 root 用戶可以操作
-S
設置資源的軟限制
-a
顯示目前所有資源設定的限制
-b
socket 緩衝的最大值,單位
-c
core 文件的最大值,單位 blocks
-d
進程數據段的最大值,單位 KB
-e
調度優先級上限,這裏的優先級指 NICE 值。只針對普通用戶進程有效
-f
當前 Shell 可創建文件總大小的上限,單位 blocks
-i
被掛起/阻塞的最大信號數量
-l
可以鎖住的物理內存的最大值,單位 KB
-m
可以使用的常駐內存的最大值,單位 KB
-n
每個進程可以同時打開的最大文件數
-p
管道的最大值,單位 block,1 block = 512 bytes
-q
POSIX 消息隊列的最大值
-r
限制程序實時優先級,只針對普通用戶進程有效
-s
進程棧最大值,單位 KB
-t
最大 CPU 時間,單位 s
-u
用戶最多可啓動的進程數目
-v
當前 Shell 可使用的最大虛擬內存,單位 KB
-x
文件鎖的最大數量
-T
線程的最大數量
4. 常用示例
(1)查看現有系統資源限制。
ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 255112
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
(2)控制進程發生段錯誤(Segmentation Fault)時生成 coredump 文件。
ulimit -c unlimited
(3)設置進程的棧大小沒有限制。
ulimit -s unlimited
轉自:戀貓大鯉魚 dablelv.blog.csdn.net/article/details/100601956
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/UQGd3c8fUtwdfEBfigL3xg