我有两台运行供应商应用程序的服务器。在一台服务器上,如果应用程序崩溃,它会创建一个核心转储,但第二个服务器则不会。被认为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