分類專欄: Linux
轉自:https://www.cnblogs.com/qq78292959/archive/2012/05/08/2490443.html
ulimit -a 用來顯示當前的各種用戶進程限制
Linux對於每個用戶,系統限制其最大進程數,為提高性能,可以根據設備資源情況,
設置個Linux用戶的最大進程數,一些需要設置為無限制:
數據段長度:ulimit -d unlimited
最大內存大小:ulimit -m unlimited
堆棧大小:ulimit -s unlimited
我們在用這個命令的時候主要是為了產生core文件,就是程序運行發行段錯誤時的文件。
ulimit命令
功能說明:控制shell程序的資源。
語 法:ulimit [-aHS][-c <core文件上限>][-d <數據節區大小>][-f <文件大小>][-m <內存大小>][-n <文件數目>][-p <緩沖區大小>][-s <堆疊大小>][-t <CPU時間>][-u <程序數目>][-v <虛擬內存大小>]
補充說明:ulimit為shell內建指令,可用來控制shell執行程序的資源。
參 數:
-a 顯示目前資源限制的設定。
-c <core文件上限> 設定core文件的最大值,單位為區塊。
-d <數據節區大小> 程序數據節區的最大值,單位為KB。
-f <文件大小> shell所能建立的最大文件,單位為區塊。
-H 設定資源的硬性限制,也就是管理員所設下的限制。
-m <內存大小> 指定可使用內存的上限,單位為KB。
-n <文件數目> 指定同一時間最多可開啟的文件數。
-p <緩沖區大小> 指定管道緩沖區的大小,單位512字節。
-s <堆疊大小> 指定堆疊的上限,單位為KB。
-S 設定資源的彈性限制。
-t <CPU時間> 指定CPU使用時間的上限,單位為秒。
-u <程序數目> 用戶最多可開啟的程序數目。
-v <虛擬內存大小> 指定可使用的虛擬內存上限,單位為KB。
當系統中的一些程序在遇到一些錯誤以及crash時,系統會自動產生core文件記錄crash時刻系統信息,包括內存和寄存器信息,用以程序員日 后debug時可以使用。這些錯誤包括段錯誤、非法指令、總線錯誤或用戶自己生成的退出信息等等,一般地,core文件在當前文件夾中存放。
core文件有時可能在你發生錯誤時,並沒有出現在你當前的文件夾中,發生這種情況的原因有兩個:一個是當前終端被設置為不能彈出core文件;另一種則是core文件被指定了路徑。
對於前者,我們可以使用ulimit命令對core文件的大小進行設定。一般默認情況下,core文件的大小被設置為0,這樣系統就不dump出core文件了。這時,使用命令:ulimit -c unlimited進行設置,就可以把core文件的大小設置為無限大,同時也可以使用數字來替代unlimited,對core文件的上限制做更精確的設定。
除了可以設置core文件的大小之外,還可以對core文件的名稱進行一些規定。這種設置是對/proc/sys/kernel/core_pattern和/proc/sys/kernel/core_uses_pid這兩個文件進行修改。改動這兩個文件的方法如下:
echo <pattern> > /proc/sys/kernel/core_pattern
echo <"0"/"1"> /proc/sys/kernel/core_uses_pid
並且注意,只有超級用戶才可以修改這兩個表。
core_pattern接受的是core文件名稱的pattern,它包含任何字符串,並且用%作為轉移符號生成一些標示符,為core文件名稱加入特殊含義。已定義的標示符有如下這些:
%%:相當於%
%p:相當於<pid>
%u:相當於<uid>
%g:相當於<gid>
%s:相當於導致dump的信號的數字
%t:相當於dump的時間
%e:相當於執行文件的名稱
%h:相當於hostname
除以上這些標志位外,還規定:
1、末尾的單個%可以直接去除;
2、%加上除上述以外的任何字符,%和該字符都會被去除;
3、所有其他字符都作為一般字符加入名稱中;
4、core文件的名稱最大值為64個字節(包括'\0');
5、core_pattern中默認的pattern為core;
6、為了保持兼容性,通過設置core_uses_pid,可以在core文件的末尾加上%p;
7、pattern中可以包含路徑信息。
開啟或關閉core文件的生成
ulimit -c 可以查看是否打開此選項,若為0則為關閉;
ulimit -c 0可手動關閉
ulimit -c 1000 為設置core文件大小最大為1000k
ulimit -c unlimited 設置core文件大小為不限制大小
很多系統在默認的情況下是關閉生成core文件的,這個命令可以加到你的profile中去。
