每天一個 Linux 命令:ulimit 命令

1. 命令簡介

ulimitShell 內建命令,用於查看或設置 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