與檔案系統及程式的限制關係 ulimit

2021-07-03 12:22:25 字數 1540 閱讀 9767

想象乙個狀況:我的 linux 主機裡面同時登入了十個人,這十個人不知怎麼搞的, 同時開啟了 100 個檔案,每個檔案的大小約 10mbytes ,請問一下, 我的 linux 主機的記憶體要有多大才夠? 10*100*10 = 10000 mbytes = 10gbytes ... 老天爺,這樣,系統不掛點才有鬼哩!為了要預防這個情況的發生,所以我們的 bash 是可以『

限制使用者的某些系統資源』的,包括可以開啟的檔案數量, 可以使用的 cpu 時間,可以使用的記憶體總量等等。如何設定?用 ulimit ! 

[root@www ~]#

ulimit [-shacdfltu] [配額] 

選項與引數:

-h :hard limit ,嚴格的設定,必定不能超過這個設定的數值; 

-s :soft limit ,警告的設定,可以超過這個設定值,但是若超過則有警告訊息。 在設定上,通常 soft 會比 hard 小,舉例來說,soft 可設定為 80 而 hard 設定為 100,那麼你可以使用到 90 (因為沒有超過 100),但介於 80~100 之間時, 系統會有警告訊息通知你! 

-a :後面不接任何選項與引數,可列出所有的限制額度; 

-c :當某些程式發生錯誤時,系統可能會將該程式在記憶體中的資訊寫成檔案(除錯用), 這種檔案就被稱為核心檔案(core file)。此為限制每個核心檔案的最大容量。 

-f :此 shell 可以建立的最大檔案容量(一般可能設定為 2gb)單位為 kbytes

-d :程式可使用的最大斷裂記憶體(segment)容量;

-l :可用於鎖定 (lock) 的記憶體量 

-t :可使用的最大 cpu 時間 (單位為秒)

-u :單一使用者可以使用的最大程式(process)數量。 

範例一:列出你目前身份(假設為root)的所有限制資料數值 

[root@www ~]# ulimit -a

範例二:限制使用者僅能建立 10mbytes 以下的容量的檔案 

[root@www ~]# ulimit -f 10240

[root@www ~]# ulimit -a 

dd if=/dev/zero of=123 bs=1m count=20 

file size limit exceeded                              <==嘗試建立 20mb 的檔案,結果失敗了!

其實單一 filesystem 能夠支援的單一檔案大小與 block 的大小有關。例如 block size 為 1024 byte 時,單一檔案可達 16gb 的容量。但是,我們可以用 ulimit 來限制使用者可以建立的檔案大小喔! 利用 ulimit -f 就可以來設定了!例如上面的範例二,要注意單位喔!單位是 kbytes。若改天你一直無法建立乙個大容量的檔案,記得瞧一瞧 ulimit 的資訊喔!

tips: 想要復原 ulimit 的設定最簡單的方法就是登出再登入,否則就是得要重新以 ulimit 設定才行! 不過,要注意的是,一般身份使用者如果以 ulimit 設定了 -f 的檔案大小, 那麼他『只能繼續減小檔案容量,不能增加檔案容量喔!』另外,若想要管控使用者的 ulimit 限值。

核心與檔案系統的關係

核心與檔案系統的關係 技術上說linux是乙個核心。核心 指的是乙個提供硬體抽象層 磁碟及檔案系統控制 多工等功能的系統軟體。乙個核心不是一套完整的作業系統。一套基於linux核心的完整作業系統叫作linux作業系統,或是gnu linux。檔案系統是kernel的一部分。檔案系統實現了系統上儲存介...

Linux核心與根檔案系統的關係

linux核心與根檔案系統的關係 開篇題外話 對於linux初學者來說,這是乙個很糾結的問題,但這也是乙個很關鍵的問題!一語破天機 儘管核心是 linux 的核心,但檔案卻是使用者與作業系統互動所採用的主要工具。這對 linux 來說尤其如此,這是因為在 unix 傳統中,它使用檔案 i o 機制管...

Linux核心與根檔案系統的關係

linux核心與根檔案系統的關係 開篇題外話 對於linux初學者來說,這是乙個很糾結的問題,但這也是乙個很關鍵的問題!一語破天機 儘管核心是 linux 的核心,但檔案卻是使用者與作業系統互動所採用的主要工具。這對 linux 來說尤其如此,這是因為在 unix 傳統中,它使用檔案 i o 機制管...