达梦数据库安装后手动配置core路径 调试并查看
先查看一下系统的core的相关信息
在 Linux 上,所有 core 文件怎么生成、放在哪,由内核参数 kernel.core_pattern 决定。输入
sysctl kernel.core_pattern
可以有好几种输出:
第一种:
/var/coredump/core.%e.%p.%t 是这种普通路径
%e:程序名。
* %p:进程 ID。
* %t:崩溃时间戳
去相应路径下去找就可以
第二种:
输出以 | 开头(交给外部程序处理)
类似于我的输出
内核生成 core 时,不直接写磁盘文件,而是把 core 二进制数据流通过管道,传给后面指定的程序 /usr/libexec/abrt-hook-ccpp。
作用:交由 abrtd(自动崩溃报告工具)处理崩溃转储,自动收集、压缩、归档崩溃日志,而不是裸 core 文件散落在系统。
注意;不同程序运行崩溃产生的core文件不一定在同一个位置。
会不会在同一位置,完全看 kernel.core_pattern
这种 | 开头的情况,所有程序的 core 都由 abrt 统一收集,放在同一个目录:/var/spool/abrt/ 下面,只是每个崩溃事件一个子目录,文件名里会带上程序名、PID 等信息
我们可以修改 kernel.core_pattern的值改为自定义路径
比如:
第一种:
mkdir -p /dmdata/coredump
sysctl -w kernel.core_pattern="/dmdata/coredump -%e-%p-%t"
sysctl -p (这些操作只是临时修改,重启后不会保存)
之后系统中所有程序崩溃时产生的core文件都生成在/dmdata/coredump目录下 只是文件名不同,不会相互覆盖。
第二种:
sysctl -w kernel.core_pattern="core.%e.%p"
没有定义路径。内核就会在进程崩溃时,把 core 文件写到进程的当前工作目录。
我用的绝对路径
检查一下core权限是否打开
ulimit - c
尝试生成一个core文件
先启动数据库服务
查询进程
ps -ef | grep dmserver | grep -v grep
杀死进程
Kill – 6 你的进程号
core文件生成完成
用dmrdc解析
