1 现象说明
DM 达梦数据库 Core Dump 文件 说明
https://www.cndba.cn/dave/article/3732
[dave@www.cndba.cn ~]# ulimit -c
0
[dave@www.cndba.cn ~]# ulimit -c unlimited
[dave@www.cndba.cn ~]# ulimit -c
unlimited
[dave@www.cndba.cn ~]# ps -ef|grep dms
dmdba 3381 1 0 11:33 ? 00:00:03 /dm/dmdbms/bin/dmserver path=/dm/dmdbms/data/DCP/dm.ini -noconsole
root 4764 4278 0 12:06 pts/1 00:00:00 grep --color=auto dms
[dave@www.cndba.cn ~]# kill -9 3381
[dave@www.cndba.cn ~]#
[dave@www.cndba.cn bin]$ pwd
/dm/dmdbms/bin
[dave@www.cndba.cn bin]$ ll core*
ls: 无法访问core*: 没有那个文件或目录
[dave@www.cndba.cn bin]$
[dave@www.cndba.cn bin]$ uname -r
4.19.90-11.ky10.x86_64
[dave@www.cndba.cn bin]$
Kill 掉dmserver 进程后,并没有产生core 文件。
2 解决问题
查看core 配置:
[dave@www.cndba.cn ~]# cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h
根据这里说明,文件的结果会被Linux的一个abrt进程吞掉了。abrtd 是一个守护进程监控的应用程序崩溃。当发生崩溃时,它将收集的崩溃(核心文件的命令行, etc .)application ,并采取措施根据类型崩溃并根据 /etc/abrt/abrt.conf的config 文件中的配置中.
2.1 停止并禁用abrt
[dave@www.cndba.cn ~]# systemctl status abrt
abrt-ccpp.service abrt-oops.service abrt-vmcore.service
abrtd.service abrt-pstoreoops.service abrt-xorg.service
[dave@www.cndba.cn ~]# systemctl status abrtd.service
● abrtd.service - ABRT Automated Bug Reporting Tool
Loaded: loaded (/usr/lib/systemd/system/abrtd.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2022-11-02 11:32:54 CST; 5min ago
Main PID: 2873 (abrtd)
Tasks: 1
CGroup: /system.slice/abrtd.service
└─2873 /usr/sbin/abrtd -d -s
11月 02 11:32:54 dcp1 systemd[1]: Started ABRT Automated Bug Reporting Tool.
11月 02 11:32:57 dcp1 abrtd[2873]: Init complete, entering main loop
[dave@www.cndba.cn ~]#
[dave@www.cndba.cn ~]# systemctl stop abrtd.service
[dave@www.cndba.cn ~]# systemctl disable abrtd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/abrtd.service.
[dave@www.cndba.cn ~]#
2.2 修改参数
启用core 功能:
[dave@www.cndba.cn ~]# ulimit -c
0
[dave@www.cndba.cn ~]# ulimit -c unlimited
[dave@www.cndba.cn ~]# ulimit -c
unlimited
[dave@www.cndba.cn ~]# echo "./core-%e-%p-%s" > /proc/sys/kernel/core_pattern
[dave@www.cndba.cn ~]# cat /proc/sys/kernel/core_pattern
./core-%e-%p-%s
[dave@www.cndba.cn ~]#
检查是否生效:
[dave@www.cndba.cn ~]# sysctl kernel.core_pattern
kernel.core_pattern = ./core-%e-%p-%s
[dave@www.cndba.cn ~]#
修改/etc/sysctl.conf 参数:
kernel.core_pattern=./core-%e-%p-%s
kernel.core_uses_pid=1
sysctl -p 生效:
[dave@www.cndba.cn ~]# sysctl -p
kernel.core_pattern = ./core-%e-%p-%s
kernel.core_uses_pid = 1
[dave@www.cndba.cn ~]#
core_pattern的命名参数如下:
%c 转储文件的大小上限
%e 所dump的文件名
%g 所dump的进程的实际组ID
%h 主机名
%p 所dump的进程PID
%s 导致本次coredump的信号
%t 转储时刻(由1970年1月1日起计的秒数)
%u 所dump进程的实际用户ID
也可以配置永久生效:
/etc/security/limits.conf
* soft core unlimited
* hard core unlimited
2.3 验证
通过强杀一个进程产生一个coredump文件(root用户+ kill -11)
[dave@www.cndba.cn ~]# ps -ef|grep dms
dmdba 5214 1 0 14:11 pts/1 00:00:00 /dm/dmdbms/bin/dmserver path=/dm/dmdbms/data/DCP/dm.ini -noconsole
root 5315 4328 0 14:12 pts/2 00:00:00 grep --color=auto dms
[dave@www.cndba.cn ~]# kill -11 5214
[dave@www.cndba.cn ~]#
验证:
[dave@www.cndba.cn bin]$ pwd
/dm/dmdbms/bin
[dave@www.cndba.cn bin]$ ll core*
-rw------- 1 dmdba dinstall 2851975168 12月 21 14:12 core-dmserver-5214-8
[dave@www.cndba.cn bin]$
版权声明:本文为博主原创文章,未经博主允许不得转载。