2013-05-02 150 views
-1

我有兩臺運行供應商應用程序的服務器。在一臺服務器上,如果應用程序崩潰,它會創建一個核心轉儲,但第二個服務器則不會。被認爲Linux無法從應用程序創建核心轉儲

的服務器設置相同的,但我想弄清楚爲什麼應用程序不創建一個核心轉儲。我檢查了所有的典型設置,並且一直在研究,但沒有運氣。

奇怪的部分是,如果我運行一個kill -s SIGSEGV $$作爲我的應用程序用戶,它會在應用程序創建核心轉儲的同一目錄中生成一個核心轉儲。供應商和Linux團隊目前都不確定,這就是我尋求幫助的原因。

$ cat /proc/sys/kernel/core_pattern 
core 

$ cat /proc/sys/kernal/core_uses_pid 
1 

$ ulimit -c 
unlimited 

$ cat /etc/security/limits.conf | grep core 
* soft core unlimited 
* hard core unlimited 

$ cat /etc/profile | grep ulimit 
ulimit -c unlimited > /dev/null 2>&1 

$ cat /proc/sys/fs/suid_dumpable 
0 

$ cat /etc/sysconfig/init | grep CORE 
DAEMON_COREFILE_LIMIT='unlimited' 

回答

3

可能還有其他一些原因造成coredump未被創建。檢查的核心(5)可能上榜理由:http://linux.die.net/man/5/core

檢查dmesg的輸出。

檢查在/ proc/PID /限制特定處理核心文件大小限制。

檢查過程中用戶可以創建在/ proc/PID/CWD目錄的典型信息轉儲大小的文件。

指定在/ proc/sys目錄/內核/ core_pattern絕對文件路徑,指向一個已知的可寫位置。

創建一個短程序附着在覈心轉儲接受性協議,某處保存它,並在/ proc/SYS /內核/指定它core_pattern,根據芯(5)。通過管道傳輸的內容不受限制。

+0

已經在該網站上通過evertyhing。不知道我在dmesg輸出中尋找什麼。你能給我多一點信息嗎? [/ proc/26427]>貓限制| grep核心最大核心文件大小無限無限字節[/ proc/26427/cwd]> echo> test [/ proc/26427/cwd]> ls -ltr test -rw -r ----- 1個用戶用戶1 5月3日13 :52測試我會與我們的Linux團隊覈對一下,看看他們是否可以將這一改變變爲絕對路徑。在此期間的其他建議? – 2013-05-03 18:57:10

+0

Patrick在dmesg中查找提及創建coredump文件的任何錯誤的消息。這個過程似乎沒有核心文件大小限制,所以這不是問題。確保您將文件創建作爲運行該進程的用戶進行測試。另外,1個字節遠小於最小的coredump文件大小。創建一個文件,其大小通常爲您的進程通常在另一臺計算機上創建的coredump的大小,並在其中運行。 – spbnick 2013-05-04 09:11:22

+0

好吧,算了一下。 Oracle客戶端正在竊取轉儲。我需要在sqlnet.ora中設置這些參數。需要添加DIAG_ADR_ENABLED = OFF DIAG_SIGHANDLER_ENABLED = FALSE DIAG_DDE_ENABLED = FALSE。一切都很好。 – 2013-05-16 03:11:34

相關問題