麒麟系统默认通过systemd-coredump处理崩溃生成coredump,易占满磁盘拖慢系统;需同步停用systemd-coredump服务、屏蔽apport报告、锁定limits.conf中core限制,并清理残留文件。

麒麟系统在程序崩溃时默认会生成coredump文件,这些文件堆积在/tmp或/var/lib/systemd/coredump下,容易占满磁盘空间并拖慢系统响应,尤其当守护进程反复崩溃时会迅速填满tmpfs分区。关闭该机制需从内核参数、服务拦截、用户限制三处同步切断,缺一不可。
停用systemd-coredump服务(首选方法)
麒麟V10及后续版本默认启用systemd-coredump作为核心转储处理器,它优先接管所有崩溃事件。直接禁用该服务可立即阻断转储链路。
执行命令停止并禁用服务:sudo systemctl stop systemd-coredump && sudo systemctl disable systemd-coredump
验证是否已卸载处理逻辑:运行 cat /proc/sys/kernel/core_pattern,若输出为 none 或空值,说明systemd已不再注册为处理器;若仍显示 |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %e,则需强制重置:sudo sysctl -w kernel.core_pattern=core
屏蔽apport崩溃报告(桌面版必做)
银河麒麟桌面版预装apport服务,它会劫持段错误信号并阻止core文件落地,同时自身又不生成有效调试数据——导致既无日志又无法分析,还持续占用资源。
方法一:临时禁用
执行 sudo service apport stop 并确认状态为 inactive
方法二:永久禁用
编辑配置文件:sudo vim /etc/default/apport,将 enabled=1 改为 enabled=0,保存后重启生效
注意:此步骤仅对桌面版有效,服务器版无apport服务,跳过即可
锁定用户级core限制(全局兜底)
即使上层服务被禁用,内核仍可能按用户limits策略生成core,必须通过系统级配置彻底封死。
第一步:编辑limits配置文件sudo vim /etc/security/limits.conf
第二步:在文件末尾添加两行强制限制* soft core 0* hard core 0
第三步:使当前会话立即生效ulimit -c 0 —— 这一步不能省略,否则新打开的终端仍可能触发转储
第四步:重启系统或重新登录用户会话,确保所有shell进程加载新限制
清理残留转储路径(防写入失败引发连锁异常)
若之前已启用coredump,/var/lib/systemd/coredump或/tmp下可能存有旧文件,其所在挂载点若被占满,会导致新进程连fork都失败。
执行清理命令:sudo find /var/lib/systemd/coredump /tmp -name "core*" -type f -delete 2>/dev/null
检查目标目录挂载状态:df -h /tmp /var/lib/systemd/coredump,若使用tmpfs且使用率超90%,需同步清空整个tmpfs:sudo mount -o remount,size=2G /tmp(根据实际内存调整size值)











