【Linux】一步一步学Linux——ulimit命令(218)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項
- 04. 參考示例
- 05. 總結
- 06. 附錄
01. 命令概述
ulimit命令用來限制系統用戶對shell資源的訪問。
假設有這樣一種情況,當一臺 Linux 主機上同時登陸了 10 個人,在系統資源無限制的情況下,這 10 個用戶同時打開了 500 個文檔,而假設每個文檔的大小有 10M,這時系統的內存資源就會受到巨大的挑戰。
而實際應用的環境要比這種假設復雜的多,例如在一個嵌入式開發環境中,各方面的資源都是非常緊缺的,對于開啟文件描述符的數量,分配堆棧的大 小,CPU 時間,虛擬內存大小,等等,都有非常嚴格的要求。資源的合理限制和分配,不僅僅是保證系統可用性的必要條件,也與系統上軟件運行的性能有著密不可分的聯 系。這時,ulimit 可以起到很大的作用,它是一種簡單并且有效的實現資源限制的方式。
ulimit 用于限制 shell 啟動進程所占用的資源,支持以下各種類型的限制:所創建的內核文件的大小、進程數據塊的大小、Shell 進程創建文件的大小、內存鎖住的大小、常駐內存集的大小、打開文件描述符的數量、分配堆棧的最大大小、CPU 時間、單個用戶的最大線程數、Shell 進程所能使用的最大虛擬內存。同時,它支持硬資源和軟資源的限制。
作為臨時限制,ulimit 可以作用于通過使用其命令登錄的 shell 會話,在會話終止時便結束限制,并不影響于其他 shell 會話。而對于長期的固定限制,ulimit 命令語句又可以被添加到由登錄 shell 讀取的文件中,作用于特定的 shell 用戶。
02. 命令格式
用法:ulimit [-SHacdefilmnpqrstuvx] [限制]03. 常用選項
選項:-S 使用 `soft'(軟)資源限制-H 使用 `hard'(硬)資源限制-a 所有當前限制都被報告-b 套接字緩存尺寸-c 創建的核文件的最大尺寸-d 一個進程的數據區的最大尺寸-e 最高的調度優先級(`nice')-f 有 shell 及其子進程可以寫的最大文件尺寸-i 最多的可以掛起的信號數-l 一個進程可以鎖定的最大內存尺寸-m 最大的內存進駐尺寸-n 最多的打開的文件描述符個數-p 管道緩沖區尺寸-q POSIX 信息隊列的最大字節數-r 實時調度的最大優先級-s 最大棧尺寸-t 最大的CPU時間,以秒為單位-u 最大用戶進程數-v 虛擬內存尺寸-x 最大的鎖數量04. 參考示例
4.1 顯示系統資源的限制
[deng@localhost ~]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7806 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 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) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [deng@localhost ~]$ core file size (blocks, -c) 0 #core文件的最大值為100 blocks。 data seg size (kbytes, -d) unlimited #進程的數據段可以任意大。 scheduling priority (-e) 0 file size (blocks, -f) unlimited #文件可以任意大。 pending signals (-i) 98304 #最多有98304個待處理的信號。 max locked memory (kbytes, -l) 32 #一個任務鎖住的物理內存的最大值為32KB。 max memory size (kbytes, -m) unlimited #一個任務的常駐物理內存的最大值。 open files (-n) 1024 #一個任務最多可以同時打開1024的文件。 pipe size (512 bytes, -p) 8 #管道的最大空間為4096字節。 POSIX message queues (bytes, -q) 819200 #POSIX的消息隊列的最大值為819200字節。 real-time priority (-r) 0 stack size (kbytes, -s) 10240 #進程的棧的最大值為10240字節。 cpu time (seconds, -t) unlimited #進程使用的CPU時間。 max user processes (-u) 98304 #當前用戶同時打開的進程(包括線程)的最大個數為98304。 virtual memory (kbytes, -v) unlimited #沒有限制進程的最大地址空間。 file locks (-x) unlimited #所能鎖住的文件的最大個數沒有限制。4.2 設置單一用戶程序數目上限
[deng@localhost ~]$ ulimit -u 500 [deng@localhost ~]$4.3 將每個進程可以打開的文件數目加大到4096
[root@localhost ~]# ulimit -n 4096 [root@localhost ~]#4.4 指定可使用的虛擬內存上限為12000KB
[root@localhost ~]# ulimit -v 12000 [root@localhost ~]#4.5 指定CPU使用時間的上限為4s
[root@localhost ~]# ulimit -t 44.6 單獨顯示CPU使用事件上限值
[root@localhost ~]# ulimit -t 4 [root@localhost ~]#4.7 指定CPU使用的時間無限制
[root@localhost ~]# ulimit -t unlimited [root@localhost ~]#05. 總結
06. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——ulimit命令(218)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——d
- 下一篇: 【Linux】一步一步学Linux——r