centos7 目录老是生成core. 文件,把磁盘占满的解决

一、问题

问题描述:centos7有个目录老是生成core. 把磁盘占满,又查不到是哪个应用生成的。

1

二、解决方案

  1. 先查看core文件是否开启,执行命令:ulimit -a
    1
  • 如果 显示 core file size 等于 unlimited ,表示不限制core文件大小
  • 如果 显示 core file size 等于 0,表示没有设置,即关闭core文件生成功能,防止大量的core文件占满磁盘
  1. 设定生成的core文件大小,可以使用以下命令:
  • 内部调试时,可以选择不限制文件大小
ulimit -c 1000 // 设定core文件为1000K
ulimit -c unlimited // 不限制core文件大小
  • 实际生产部署时,设置文件大小为0,即关闭core文件生成功能,防止大量的core文件占满磁盘
ulimit -c 0
  1. 使设置生效

(1)修订 /etc/profile文件, 这样机器重启,也会生效
vi /etc/profile ,在文件中添加设置命令内容如下:

   ulimit -c 0
   # 或 根据自己需求设置
   ulimit -c unlimited

保存编辑。

(2)输入以下命令,使得设置立即生效:source /etc/profile

以上设定完成,就可以生成core dump文件,但是core文件只会在执行程序的目录下。

  1. 为了方便查找,可以进行以下设定,使得core dump文件在固定目录生成:

core_pattern的命名参数如下
%c 转储文件的大小上限
%e 所dump的文件名
%g 所dump的进程的实际组ID
%h 主机名
%p 所dump的进程PID
%s 导致本次coredump的信号
%t 转储时刻(由1970年1月1日起计的秒数)
%u 所dump进程的实际用户ID

(1)编辑文件 /etc/sysctl.conf,设置生成的core文件名格式(core_进程名_进程PID)和存放目录
备注: 先在 /var/ 下 创建新文件夹 core – core的存放目录

vi /etc/sysctl.conf

添加以下内容:

kernel.core_pattern=/var/core/core_%e_%p
kernel.core_uses_pid=0

使用以下命令,生成的core文件就可以统一在/var/core/ 文件夹中查看到了
(2)使得设置即时生效,执行命令:sysctl –p /etc/sysctl.conf

  1. 生成core文件后, 使用gdb调试:
gdb /执行程序目录/执行程序 /var/core/core_执行程序名_执行程序PID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值