Linux中core文件简介及关闭systemd-coredump服务

0    628    3

Tags:

👉 本文共约1838个字,系统预计阅读时间或需7分钟。

简介

  在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。

默认情况下, Linux 会把core dump 的资讯储存在/var/crash/ 目录, 而通过systemd 启动的服务, 则会储存在/var/lib/systemd/coredump/ 目录。

core文件的生成开关和大小限制

  (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。

  (2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。例如使用ulimit -c 1000将会把core文件限制为1000KB。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件,在调试此core文件的时候,gdb会提示错误。

  (3)使用ulimit -c unlimited,则表示core文件的大小不受限制。

  (4)可以将ulimit -c unlimited写入到.bashrc中。

core文件可执行程序的路径

  默认为输入可执行文件运行命令的同一路径下。若系统生成的core文件不带其它任何扩展名称,则全部命名为core。新的core文件生成将覆盖原来的core文件。

  如何查询和修改Linux操作系统生成core dump文件的默认路径?

  例如:

core文件命名

控制core文件的文件名中是否添加pid作为扩展

  这个文件/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加 pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件统一命名为core。

可通过以下命令修改此文件:

修改core dump文件保存路径和文件名格式

  方法1:临时修改:修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。

可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复