linux下ulimit命令詳解__linux

來源:互聯網
上載者:User
1,說明:
ulimit 用於 shell 啟動進程所佔用的資源 .
2,類別:
shell內建命令
3,文法格式:
ulimit [-acdfHlmnpsStvw] [size]
4,參數介紹:
-H 設定硬體資源限制.
-S 設定軟體資源限制.
-a 顯示當前所有的資源限制.
-c size:設定core檔案的最大值.單位:blocks
-d size:設定資料區段的最大值.單位:kbytes
-f size:設定建立檔案的最大值.單位:blocks
-l size:設定在記憶體中鎖定進程的最大值.單位:kbytes
-m size:設定可以使用的常駐記憶體的最大值.單位:kbytes
-n size:設定核心可以同時開啟的檔案描述符的最大值.單位:n
-p size:設定管道緩衝區的最大值.單位:kbytes
-s size:設定堆棧的最大值.單位:kbytes
-t size:設定CPU使用時間的最大上限.單位:seconds
-v size:設定虛擬記憶體的最大值.單位:kbytes 5,簡單一實例:
5.舉例
在 Linux 下 寫程式的時候,如果程式比較大,經常會遇到“段錯誤”(segmentation fault)這樣的問題,這主要就是由於Linux系統初始的堆棧大小(stack size)太小的緣故,一般為10M。我一般把stack size設定成256M,這樣就沒有段錯誤了。命令為:
ulimit   -s 262140
如果要系統自動記住這個配置,就編輯 /etc/profile檔案 ,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,添加“ulimit   -s 262140”,儲存重啟系統就可以了。
1]在RH8的環境檔案/etc/profile中,我們可以看到系統是如何配置ulimit的:
#grep ulimit /etc/profile
ulimit -S -c 0 > /dev/null 2>&1
這條語句設定了對軟體資源和對core檔案大小的設定
2]如果我們想要對由shell建立的檔案大小作些限制,如:
#ll h
-rw-r--r-- 1 lee lee 150062 7月 22 02:39 h
#ulimit -f 100 #設定建立檔案的最大塊(一塊=512位元組)
#cat h>newh
File size limit exceeded
#ll newh
-rw-r--r-- 1 lee lee 51200 11月 8 11:47 newh
檔案h的大小是150062位元組,而我們設定的建立檔案的大小是512位元組x100塊=51200位元組
當然系統就會根據你的設定產生了51200位元組的newh檔案.
3]可以像執行個體1]一樣,把你要設定的ulimit放在/etc/profile這個環境檔案中.
用途
設定或報告使用者資源極限。
文法
ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -s ] [ -t ] [ Limit ]
描述
ulimit 命令設定或報告使用者進程資源極限,如 /etc/security/limits 檔案所定義。檔案包含以下預設值極限:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
當新使用者添加到系統中時,這些值被作為預設值使用。當向系統中添加使用者時,以上值通過 mkuser 命令設定,或通過 chuser 命令更改。
極限分為軟性或硬性。通過 ulimit 命令,使用者可將軟極限更改到硬極限的最大設定值。要更改資源硬極限,必須擁有 root 使用者權限。
很多系統不包括以上一種或數種極限。 特定資源的極限在指定 Limit 參數時設定。Limit 參數的值可以是每個資源中指定單元中的數字,或者為值 unlimited。要將特定的 ulimit 設定為 unlimited,可使用詞 unlimited。
    註:在 /etc/security/limits 檔案中設定預設極限就是設定了系統寬度極限, 而不僅僅是建立使用者時使用者所需的極限。
省略 Limit 參數時,將會列印出當前資源極限。除非使用者指定 -H 標誌,否則列印出軟極限。當使用者指定一個以上資源時,極限名稱和單元在值之前列印。如果未給予選項,則假定帶有了 -f 標誌。
由於 ulimit 命令影響當前 shell 環境,所以它將作為 shell 常規內建命令提供。如果在獨立的命令執行環境中調用該命令,則不影響調用者環境的檔案大小極限。以下樣本中正是這種情況:
nohup ulimit -f 10000
env ulimit 10000
一旦通過進程減少了硬極限,若無 root 特權則無法增加,即使返回到原值也不可能。
關 於使用者和系統資源極限的更多資訊,請參見 AIX 5L Version 5.3 Technical Reference: Base Operating System and Extensions Volume 1 中的 getrlimit、setrlimit 或 vlimit 子常式。
標誌
-a     列出所有當前資源極限。
-c     以 512 位元組塊為單位,指定核心轉儲的大小。
-d     以 K 位元組為單位指定資料區域的大小。
-f     使用 Limit 參數時設定檔案大小極限(以塊計),或者在未指定參數時報告檔案大小極限。預設值為 -f 標誌。
-H     指定設定某個給定資源的硬極限。如果使用者擁有 root 使用者權限,可以增大硬極限。任何使用者均可減少硬極限。
-m     以 K 位元組為單位指定實體儲存體器的大小。
-n     指定一個進程可以擁有的檔案描述符的數量的極限。
-s     以 K 位元組為單位指定堆棧的大小。
-S     指定為給定的資源設定軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標誌均未指定,極限適用於以上二者。
-t     指定每個進程所使用的秒數。
退出狀態
返回以下退出值:
0     成功完成。
>0     拒絕對更高的極限的請求,或發生錯誤。
樣本
要將檔案大小極限設定為 51,200 位元組,輸入:
ulimit -f 100

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.