麒麟v10默认启用systemd-coredump,需检查core_pattern、服务状态及转储记录;配置路径须mkdir -p并chmod 1777,修改coredump.conf后必须daemon-reload并restart服务,systemd托管服务还需在unit中设limitcore=infinity。

麒麟系统默认启用systemd-coredump管理核心转储,但路径、压缩策略和磁盘占用等关键参数常需按生产环境要求调整,否则可能因目录不存在、权限错误或磁盘满导致core文件静默丢失。
确认当前核心转储状态
先查看系统是否已启用核心转储及当前处理方式:
执行 cat /proc/sys/kernel/core_pattern,若输出以|/usr/lib/systemd/systemd-coredump开头,说明走systemd-coredump管道;若为/var/lib/systemd/coredump/则为直接写入路径。
运行 systemctl status systemd-coredump 确保服务处于 active (running) 状态。如果显示 inactive 或 failed,后续所有配置均无效。
用 coredumpctl list --no-pager 查看已有转储记录,确认系统确实在生成文件——没有历史记录不等于没开启,可能是尚未触发崩溃,也可能是配置中途失效。
修改核心转储存储路径与命名规则
方法一:临时修改(重启后失效)
执行 sudo sysctl -w kernel.core_pattern=/var/log/coredumps/core.%e.%p.%t,将转储文件重定向至自定义目录并嵌入程序名、PID和时间戳。
方法二:永久生效(推荐)
编辑 /etc/sysctl.conf 文件,在末尾追加一行:kernel.core_pattern = /var/log/coredumps/core.%e.%p.%t
保存后执行 sudo sysctl -p 重新加载配置。
【必须提前创建目录并设置1777权限】 内核不会自动创建父目录,且严格校验权限位。执行:sudo mkdir -p /var/log/coredumps && sudo chmod 1777 /var/log/coredumps
注意:chmod 777 不够,必须是 1777(粘滞位),否则内核直接拒绝写入,不报错也不生成文件。
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
调整systemd-coredump服务参数
第一步:编辑主配置文件
用 root 权限打开 /etc/systemd/coredump.conf。
第二步:修改关键参数
取消注释并调整以下行:Storage=external(保持外部文件存储,便于归档)Compress=yes(默认已启用,节省空间)MaxUse=5G(替代默认的10%,防止占满磁盘)KeepFree=10G(确保系统至少保留10GB空闲空间)
第三步:重载配置并重启服务
执行 sudo systemctl daemon-reload && sudo systemctl restart systemd-coredump。
这一步不可跳过,否则新参数不会生效。systemd-coredump服务重启后会立即应用所有配置变更。
针对systemd托管服务单独启用core dump
systemd服务完全不继承shell的ulimit或全局sysctl设置,必须在unit文件中显式声明。
例如要为nginx服务启用core dump,执行:sudo systemctl edit nginx.service
在打开的编辑器中输入:[Service]LimitCORE=infinity
保存退出后,执行 sudo systemctl daemon-reload && sudo systemctl restart nginx。
此时nginx进程崩溃才会生成core文件。不配置此项,即使ulimit -c unlimited也无效。










