2014-05-02 47 views
0

我試圖在運行CentOS的計算機上啓用核心文件;然而,什麼我都試過了生產的核心文件…這裏是我做了什麼:在CentOS 6上啓用核心文件

添加以下兩行/etc/security/limits.conf

*  hard core unlimited 
*  soft core unlimited 

添加以下行/etc/sysconfig/init

DAEMON_COREFILE_LIMIT='unlimited 

/etc/profile添加了以下行:

ulimit -c unlimited > /dev/null 2>&1 

增加了以下行/etc/sysctl.conf

kernel.core_pattern = '/srv/core/%p_%t.core' 
fs.suid_dumpable = 1 

我確信,/srv/core存在並具有777權限。我執行了init 6來重啓操作系統。一旦系統回來了,我在試圖產生一個核心文件執行下面的C腳本:

#include <sys/types.h> 
#include <unistd.h> 
#include <signal.h> 

int main(int argc, char **argv) { 
    kill(getpid(), SIGQUIT); 
} 

輸出僅僅是Quit,而我希望看到Quit (core dumped);它顯然不會產生一個核心文件:(

我錯過或提前做錯了什麼?感謝您的幫助!

回答

2

看起來好像核心文件默認情況下,在CentOS 6中產生,但處理。由「ABRT」服務,該服務可以將它們寫入到/var/spool/abrt目錄默認情況下這是一個虛擬機是如何安裝的作品對我來說,無論如何要說明這一點,我做了以下內容:

  1. 「睡50 &「
  2. 」kill -SIGSEGV「
  3. 「ABRT-CLI列表」
  4. 識別「Directory:」行我segfaulted睡眠過程和CD匹配,它
  5. 發現信息轉儲文件存儲在那裏

SIGQUIT似乎產生一個核心,作爲好。

鑑於這些,我會驗證abrt服務正在運行,我會看看我是否有在/var/spool/abrt掩蓋新的核心文件(我認爲abrt試圖避免重複的條目,你可能想要)。不過,我不確定是否有其他配置會幫助或傷害。

1
 
Just change: 
kernel.core_pattern = '/srv/core/%p_%t.core' to kernel.core_pattern = /srv/core/%p_%t.core without "'" and it will work...
+0

我會對此表示你的評價......我已經過去了2年半(處理這件事的時候並沒有任何線索,我做了什麼來讓它工作,或者我甚至做過) - 哈哈 – Kabb5