我有兩臺運行供應商應用程序的服務器。在一臺服務器上,如果應用程序崩潰,它會創建一個核心轉儲,但第二個服務器則不會。被認爲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'
已經在該網站上通過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
Patrick在dmesg中查找提及創建coredump文件的任何錯誤的消息。這個過程似乎沒有核心文件大小限制,所以這不是問題。確保您將文件創建作爲運行該進程的用戶進行測試。另外,1個字節遠小於最小的coredump文件大小。創建一個文件,其大小通常爲您的進程通常在另一臺計算機上創建的coredump的大小,並在其中運行。 – spbnick 2013-05-04 09:11:22
好吧,算了一下。 Oracle客戶端正在竊取轉儲。我需要在sqlnet.ora中設置這些參數。需要添加DIAG_ADR_ENABLED = OFF DIAG_SIGHANDLER_ENABLED = FALSE DIAG_DDE_ENABLED = FALSE。一切都很好。 – 2013-05-16 03:11:34