ulimit詳解

bling8發表於2020-09-29

1、ulimit 功能簡述

假設有這樣一種情況,當一臺 Linux 主機上同時登陸了 10 個人,在系統資源無限制的情況下,這 10 個使用者同時開啟了 500 個文件,而假設每個文件的大小有 10M,這時系統的記憶體資源就會受到巨大的挑戰。

而實際應用的環境要比這種假設複雜的多,例如在一個嵌入式開發環境中,各方面的資源都是非常緊缺的,對於開啟檔案描述符的數量,分配堆疊的大 小,CPU 時間,虛擬記憶體大小,等等,都有非常嚴格的要求。資源的合理限制和分配,不僅僅是保證系統可用性的必要條件,也與系統上軟體執行的效能有著密不可分的聯 系。這時,ulimit 可以起到很大的作用,它是一種簡單並且有效的實現資源限制的方式。

ulimit 用於限制 shell 啟動程式所佔用的資源,支援以下各種型別的限制:所建立的核心檔案的大小、程式資料塊的大小、Shell 程式建立檔案的大小、記憶體鎖住的大小、常駐記憶體集的大小、開啟檔案描述符的數量、分配堆疊的最大大小、CPU 時間、單個使用者的最大執行緒數、Shell 程式所能使用的最大虛擬記憶體。同時,它支援硬資源和軟資源的限制。

作為臨時限制,ulimit 可以作用於通過使用其命令登入的 shell 會話,在會話終止時便結束限制,並不影響於其他 shell 會話。而對於長期的固定限制,ulimit 命令語句又可以被新增到由登入 shell 讀取的檔案中,作用於特定的 shell 使用者。

ulimit 命令的格式為:ulimit [options] [limit]

具體的 options 含義以及簡單示例可以參考以下表格。
在這裡插入圖片描述
綜上所述,linux 系統中的 ulimit 指令,對資源限制和系統效能優化提供了一條便捷的途徑。從使用者的 shell 啟動指令碼,應用程式啟動指令碼,以及直接在控制檯,都可以通過該指令限制系統資源的使用,包括所建立的核心檔案的大小、程式資料塊的大小、Shell 程式建立檔案的大小、記憶體鎖住的大小、常駐記憶體集的大小、開啟檔案描述符的數量、分配堆疊的最大大小、CPU 時間、單個使用者的最大執行緒數、Shell 程式所能使用的最大虛擬記憶體,等等方面。本文中的示例非常直觀的說明了 ulimit 的使用及其產生的效果,顯而易見,ulimit 對我們在 Linux 平臺的應用和開發工作是非常實用的。

相關文章