2013-08-21 39 views
2

我試圖從我的rootfs提供對coredump文件生成的支持,我用「ulimit -c unlimited」命令和「* hard core -1」修改了/ etc/limits文件,現在當我殺死-6 $$時,期待覈心文件的生成,但要獲得這個核心文件必須明確運行ulimit -c unlimited。如何自動運行ulimit -c unlimited

但我希望它自動發生,不需要在shell中再次運行ulimit -c無限制。

誰能告訴我什麼樣的變化我必須做出同樣的情況發生

+1

把它放在你'.profile'文件? – Nobilis

+1

添加行到你的shell啓動文件,可能是'〜/ .profile'。 – devnull

+0

可能想閱讀[this](http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html)。看起來你可以做一些關於如何設置你自己的配置文件的信息。 – Nobilis

回答

5

從一個程序,你可以使用setrlimit(RLIMIT_CORE, ...)設置核心文件的最大尺寸。要指定一個無限大小的通行證RLIM_INFINITY

詳情在此請點擊此處閱讀:http://manpages.debian.net/cgi-bin/man.cgi?query=getrlimit&sektion=2


使用sysctl命令,你可以做

sysctl kernel.core_pattern=/var/core/core.%p 

有內核創建/var/core名爲core.<pid>核心。

kernel.core_pattern=/var/core/core.%p添加到/etc/sysctl.conf使其成爲永久。 (運行sysctl -p處理您更改/etc/sysctl.conf

除了%p(用於進程ID)還有其他佔位符如下(taken from here):

%% a single % character 
%p PID of dumped process 
%u (numeric) real UID of dumped process 
%g (numeric) real GID of dumped process 
%s number of signal causing dump 
%t time of dump, expressed as seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC) 
%h hostname (same as nodename returned by uname(2)) 
%e executable filename (without path prefix) 
%E pathname of executable, with slashes ('/') replaced by exclamation marks ('!'). 
%c core file size soft resource limit of crashing process (since Linux 2.6.24) 
+0

感謝@alk,我正在尋找這樣的東西,所以我需要在/ etc/sysctl中指定sysctl kernel.core_pattern =/var/cor/core。%p。 conf?我真的需要明確運行ulimit -c unlimited嗎? –

+0

@AmitSinghTomar:'kernel.core_pattern'指定**放置核心文件的位置**以及**如何命名它。 – alk

+0

很好的@alk但它不會解決我的問題,我們在/ etc/limits文件中設置核心文件的最大大小? –