2013-05-02 140 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

相关问题