coredump.conf 中文手册
名称
coredump.conf, coredump.conf.d — 内存转储配置文件
大纲
/etc/systemd/coredump.conf
/etc/systemd/coredump.conf.d/*.conf
/run/systemd/coredump.conf.d/*.conf
/usr/lib/systemd/coredump.conf.d/*.conf
描述
这些配置文件用于控制处理内存转储的systemd-coredump(8) 工具的行为。内核是否使用 systemd-coredump 来处理内存转储,取决于内核的kernel.core_pattern
参数(参见 sysctl(8) 手册)。详见systemd-coredump(8)与core(5)手册页。
配置目录及其优先级
默认设置是在编译期间确定的,所以仅在确实需要修改默认设置的情况下,才需要使用配置文件。位于/etc/systemd/
目录中的初始配置文件,仅包含了展示选项默认值的注释,目的在于方便系统管理员查看和直接修改。
如果软件包想要自定义某些默认设置,那么必须将自定义的配置文件安装到/usr/lib/systemd/*.conf.d/
目录中。/etc/
目录仅供系统管理员使用。系统管理员可以利用下面的逻辑来覆盖默认设置:主配置文件最先被读取,优先级也最低。所有 *.conf.d/
中的配置文件都会覆盖主配置文件中的设置。所有 *.conf.d/
中的配置文件(无论位于哪个目录中),统一按照文件名的字典顺序处理。当多个配置文件都设置了同一个选项的时候:(1)如果该选项仅接受一个单一值,那么仅以文件名最靠后(字典顺序)的那一个为准;(2)如果该选项可接受一个值列表,那么将会按照文件名的字典顺序将所有值列表拼接起来。为了便于排序,建议给所有 *.conf.d/
中的配置文件都加上两位十进制数字的文件名前缀。
如果系统管理员想要屏蔽 /usr/lib/
目录中的某个配置文件,那么最佳做法是在 /etc/
目录中创建一个指向 /dev/null
的同名符号链接,即可彻底屏蔽 /usr/lib/
目录中的同名文件。
选项
所有选项都位于"[Coredump]
" 小节:
Storage=
在哪里保存内核转储: "
none
" 表示不保存内存转储,但是会在日志中记录内存转储事件以及可能存在的回溯(backtrace); 默认值 "external
" 表示将内存转储保存到外部/var/lib/systemd/coredump/
目录中; "journal
" 表示将内存转储保存到日志中,并按照正常的日志滚动规则进行滚动。在将内存转储保存到日志中的时候,也会遵守日志压缩设置,详见 journald.conf(5) 手册。在将内存转储保存到外部文件中的时候,默认也会被压缩存储,详见下文。
Compress=
接受一个布尔值,表示在将内存转储保存到外部文件中的时候,是否要压缩存储。默认值 "
yes
" 表示开启压缩。ProcessSizeMax=
允许处理的最大内存字节数。超过此大小的内存转储有可能会被保存下来,但是肯定不会生成回溯(backtrace)。
同时设置
Storage=none
与ProcessSizeMax=0
将会禁止处理一切内存转储,同时仅为每个内存转储事件记录一条简略的日志消息。ExternalSizeMax=
,JournalSizeMax=
允许保存的最大内存字节数 (未压缩前)。
MaxUse=
,KeepFree=
限制保存内存转储的外部文件对磁盘空间的占用。
MaxUse=
限制所有保存内存转储的外部文件总共允许占用的最大磁盘空间(默认值是磁盘总容量的10%),当总占用空间超过限制时,将会自动删除最老的内存转储文件,以确保可以不断保存最新的内存转储文件。KeepFree=
控制至少保留多少剩余磁盘空间(默认值是磁盘总容量的15%)。注意,在处理内存转储的过程中,磁盘空间的占用有可能会暂时突破这里所设置的限制。此外,保存内存转储的外部文件还有可能因为过于陈旧而被 systemd-tmpfiles(8) 删除。注意,将这两个选项中的任意一个设为零都表示关闭基于磁盘占用的清理。
所有选项的默认值都以注释的形式罗列在默认安装的 /etc/systemd/coredump.conf
模板文件中。
参见
systemd-journald.service(8),coredumpctl(1),systemd-tmpfiles(8)