Linux命令(72)—— ulimit 命令(builtin)

  • 2019 年 10 月 4 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/K346K346/article/details/100601956

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