ulimit -c unlimited 詳解


分類專欄: 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中去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM