概述

大多数Linux系统默认开始core dump。
我们一方面咱们想要收集信息以提升稳定性、排除故障;另外一方面,我们又想要限制debug的数据、避免泄漏一些敏感数据。第一个选择适合于研究不稳定的程序的机器。第二个选择适用于存储和处理敏感数据。

如何开启和关闭core dump

开启core dump
  • 为了开启core dump,我们需要打开系统的软限制(soft limits)
ulimit -S -c unlimited

-S:soft limit
-c:指定core dump的大小

  • 想要永久的打开core dump,可以在 /etc/security/limits.conf 文件中添加下面这一句:
soft core unlimited

另外,我们可以限制core dump文件的大小,或者关闭core dump

ulimit -c 1024 //限制大小为1024
ulimit -c 0 //限制大小为0,即不输出core文件
只使用-c参数的时候,就是查看core文件的大小限制,并且关闭了core dump

关闭core dump

core dump文件会占用磁盘空间而且可能会包含一些敏感数据,因此有的时候需要关闭它。

可以通过更新soft limit来关闭core dump

ulimit -S -c 0

想要永久的关闭core dump,我们可以在 /etc/security/limits.conf 文件中添加下面内容:

soft core 0
hard core 0

指定core dump文件输出的位置和命名规则

我们可以通过以下命令来指定core dump文件生成的位置和文件命名格式:

sudo sysctl -w kernel.core_pattern=/tmp/coredumps/core-%e-%s-%u-%g-%p-%t

这个命令是把core dump文件的生成位置写入到core pattern文件,core pattern文件是生成core dump文件的一个样板;在这个样板文件里面我们可以定义core dump文件的命名规则,比如上面使用了一些%标识符(“%e-%s-%u-%g-%p-%t” )来规定文件命名格式。

%%:一个%字符

%p:dumped进程的PID

%u:dumped进程的真实UID

%g:dumped进程的真实GID

%s:致使dump的信号编号

%t:dump的时间,精确到秒

%h:hostname

%e:可执行文件名

%c:core file大小的限制

想永久地改变core dump文件的路径,我们可以在/etc/sysctl.conf文件中添加下面的代码:

kernel.core_pattern="/coredumps/core-%e-%s-%u-%g-%p-%t"


如果以上内容对你有所帮助,请点个赞吧。
本文记录了core dump的有关操作方法,以后忘记了再回来看看。
好记性不如烂笔头。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐