当前位置: 首页 > article >正文

【Linux】修改 core 文件大小和路径

在 Linux 系统中,默认情况下,核心转储文件(core dump)会生成在当前工作目录下。为了将核心转储文件生成在指定路径下,可以通过以下方法进行配置。


1. 设置核心转储文件路径

Linux 系统提供了两种方式来指定核心转储文件的生成路径:

  1. 通过 /proc/sys/kernel/core_pattern 文件:定义核心转储文件的命名规则和存储路径。
  2. 通过 ulimit 命令:设置核心转储文件的大小限制。

2. 方法一:修改 /proc/sys/kernel/core_pattern

/proc/sys/kernel/core_pattern 文件定义了核心转储文件的命名规则和存储路径。可以通过修改该文件来指定生成路径。

(1)查看当前配置
cat /proc/sys/kernel/core_pattern

默认输出可能是:

core

表示核心转储文件会生成在当前工作目录下,文件名为 core

(2)修改配置

编辑 /proc/sys/kernel/core_pattern 文件,指定核心转储文件的路径和命名规则。例如:

echo "/var/coredump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
  • /var/coredump/:指定核心转储文件的存储路径。
  • core-%e-%p-%t:定义核心转储文件的命名规则:
    • %e:可执行文件名。
    • %p:进程 ID。
    • %t:时间戳。
(3)创建目标目录

确保目标目录存在并具有写权限:

sudo mkdir -p /var/coredump
sudo chmod 777 /var/coredump
(4)永久生效

修改 /proc/sys/kernel/core_pattern 是临时生效的,重启后会恢复默认配置。为了永久生效,可以将配置写入 /etc/sysctl.conf 文件:

echo "kernel.core_pattern=/var/coredump/core-%e-%p-%t" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

3. 方法二:设置 ulimit

ulimit 命令用于设置核心转储文件的大小限制。如果未设置或限制过小,核心转储文件可能无法生成。

(1)查看当前限制
ulimit -c
  • 如果输出为 0,表示核心转储文件生成被禁用。
  • 如果输出为 unlimited,表示没有大小限制。
(2)设置核心转储文件大小限制

将核心转储文件大小限制设置为 unlimited

ulimit -c unlimited
(3)永久生效

将以下内容添加到 /etc/security/limits.conf 文件中:

* soft core unlimited
* hard core unlimited

4. 验证配置

(1)触发核心转储

运行一个测试程序并触发核心转储。例如:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = NULL;
    *ptr = 10;  // 触发段错误
    return 0;
}

编译并运行:

gcc -o test test.c
./test
(2)检查核心转储文件

在指定的路径下检查是否生成了核心转储文件:

ls /var/coredump

输出示例:

core-test-12345-1698765432

5. 总结

  • 修改 /proc/sys/kernel/core_pattern:指定核心转储文件的路径和命名规则。
  • 设置 ulimit:确保核心转储文件的大小限制足够。
  • 永久生效:将配置写入 /etc/sysctl.conf/etc/security/limits.conf

通过以上方法,你可以将核心转储文件生成在指定路径下,便于管理和调试。


http://www.kler.cn/a/565010.html

相关文章:

  • 微服务测试
  • Geo3D城市引擎大规模建筑植被渲染
  • AppInventor2 vs Android Studio
  • 基于Python socket库构建的基于 P2P 的文件共享系统示例
  • STM32 物联网智能家居 (七) 设备子系统--风扇控制
  • dockerfile基于alpine构建haproxy
  • 突破加速度计的精度与量程瓶颈:HEROS-GAN技术
  • drupal可以自动将测试环境的网页部署到生产环境吗
  • 蓝桥杯 Java B 组之最短路径算法(Dijkstra、Floyd-Warshall)
  • 【vue3+highCharts】图表及字体大小自适应
  • 【动态规划篇】正则表达式与通配符:开启代码匹配的赛博奇幻之旅
  • 大数据SQL调优专题——底层调优
  • 详解linuxC编程下的同步原语
  • Text2SQL数据集和技术方案整理
  • Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统(全新升级)
  • Python----数据分析(Numpy四:广播机制,数组的运算,统计计算,where函数)
  • Lumoz Chain正式上线:AI 时代的新算力破局者
  • Qt 中实现链表
  • 【EXE/DLL文件的分析方法、工具环境搭建及具体分析步骤的详细指南】
  • DeepSeek开源技术全景解析:从硬件榨取到AI民主化革命