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