- systemd.index 中文手册
- systemd.directives 中文手册
- binfmt.d 中文手册
- bootctl 中文手册
- bootup 中文手册
- busctl 中文手册
- coredump.conf 中文手册
- coredumpctl 中文手册
- crypttab 中文手册
- daemon 中文手册
- dnssec-trust-anchors.d 中文手册
- environment.d 中文手册
- file-hierarchy 中文手册
- halt 中文手册
- hostname 中文手册
- hostnamectl 中文手册
- hwdb 中文手册
- journal-remote.conf 中文手册
- journal-upload.conf 中文手册
- journalctl 中文手册
- journald.conf 中文手册
- kernel-command-line 中文手册
- kernel-install 中文手册
- loader.conf 中文手册
- locale.conf 中文手册
- localectl 中文手册
- localtime 中文手册
- loginctl 中文手册
- logind.conf 中文手册
- machine-id 中文手册
- machine-info 中文手册
- machinectl 中文手册
- modules-load.d 中文手册
- networkctl 中文手册
- networkd.conf 中文手册
- nss-myhostname 中文手册
- nss-mymachines 中文手册
- nss-resolve 中文手册
- nss-systemd 中文手册
- os-release 中文手册
- pam_systemd 中文手册
- portablectl 中文手册
- resolvectl 中文手册
- resolved.conf 中文手册
- shutdown 中文手册
- sysctl.d 中文手册
- systemctl 中文手册
- systemd 中文手册
- systemd-analyze 中文手册
- systemd-ask-password 中文手册
- systemd-ask-password-console.service 中文手册
- systemd-backlight@.service 中文手册
- systemd-binfmt.service 中文手册
- systemd-bless-boot-generator 中文手册
- systemd-bless-boot.service 中文手册
- systemd-boot 中文手册
- systemd-boot-check-no-failures.service 中文手册
- systemd-cat 中文手册
- systemd-cgls 中文手册
- systemd-cgtop 中文手册
- systemd-coredump 中文手册
- systemd-cryptsetup-generator 中文手册
- systemd-cryptsetup@.service 中文手册
- systemd-debug-generator 中文手册
- systemd-delta 中文手册
- systemd-detect-virt 中文手册
- systemd-environment-d-generator 中文手册
- systemd-escape 中文手册
- systemd-firstboot 中文手册
- systemd-fsck@.service 中文手册
- systemd-fstab-generator 中文手册
- systemd-getty-generator 中文手册
- systemd-gpt-auto-generator 中文手册
- systemd-halt.service 中文手册
- systemd-hibernate-resume-generator 中文手册
- systemd-hibernate-resume@.service 中文手册
- systemd-hostnamed.service 中文手册
- systemd-hwdb 中文手册
- systemd-id128 中文手册
- systemd-importd.service 中文手册
- systemd-inhibit 中文手册
- systemd-initctl.service 中文手册
- systemd-journal-gatewayd.service 中文手册
- systemd-journal-remote.service 中文手册
- systemd-journal-upload.service 中文手册
- systemd-journald.service 中文手册
- systemd-localed.service 中文手册
- systemd-logind.service 中文手册
- systemd-machine-id-commit.service 中文手册
- systemd-machine-id-setup 中文手册
- systemd-machined.service 中文手册
- systemd-makefs@.service 中文手册
- systemd-modules-load.service 中文手册
- systemd-mount 中文手册
- systemd-networkd-wait-online.service 中文手册
- systemd-networkd.service 中文手册
- systemd-notify 中文手册
- systemd-nspawn 中文手册
- systemd-path 中文手册
- systemd-portabled.service 中文手册
- systemd-quotacheck.service 中文手册
- systemd-random-seed.service 中文手册
- systemd-rc-local-generator 中文手册
- systemd-remount-fs.service 中文手册
- systemd-resolved.service 中文手册
- systemd-rfkill.service 中文手册
- systemd-run 中文手册
- systemd-run-generator 中文手册
- systemd-sleep.conf 中文手册
- systemd-socket-activate 中文手册
- systemd-socket-proxyd 中文手册
- systemd-suspend.service 中文手册
- systemd-sysctl.service 中文手册
- systemd-system-update-generator 中文手册
- systemd-system.conf 中文手册
- systemd-sysusers 中文手册
- systemd-sysv-generator 中文手册
- systemd-time-wait-sync.service 中文手册
- systemd-timedated.service 中文手册
- systemd-timesyncd.service 中文手册
- systemd-tmpfiles 中文手册
- systemd-tty-ask-password-agent 中文手册
- systemd-udevd.service 中文手册
- systemd-update-done.service 中文手册
- systemd-update-utmp.service 中文手册
- systemd-user-sessions.service 中文手册
- systemd-vconsole-setup.service 中文手册
- systemd-veritysetup-generator 中文手册
- systemd-veritysetup@.service 中文手册
- systemd-volatile-root.service 中文手册
- systemd.automount 中文手册
- systemd.device 中文手册
- systemd.dnssd 中文手册
- systemd.environment-generator 中文手册
- systemd.exec 中文手册
- systemd.generator 中文手册
- systemd.journal-fields 中文手册
- systemd.kill 中文手册
- systemd.link 中文手册
- systemd.mount 中文手册
- systemd.netdev 中文手册
- systemd.network 中文手册
- systemd.nspawn 中文手册
- systemd.offline-updates 中文手册
- systemd.path 中文手册
- systemd.preset 中文手册
- systemd.resource-control 中文手册
- systemd.scope 中文手册
- systemd.service 中文手册
- systemd.slice 中文手册
- systemd.socket 中文手册
- systemd.special 中文手册
- systemd.swap 中文手册
- systemd.syntax 中文手册
- systemd.target 中文手册
- systemd.time 中文手册
- systemd.timer 中文手册
- systemd.unit 中文手册
- sysusers.d 中文手册
- timedatectl 中文手册
- timesyncd.conf 中文手册
- tmpfiles.d 中文手册
- udev 中文手册
- udev.conf 中文手册
- udevadm 中文手册
- user@.service 中文手册
- vconsole.conf 中文手册
systemd-coredump 中文手册
名称
systemd-coredump, systemd-coredump.socket, systemd-coredump@.service — 获取、保存、处理内存转储
大纲
/usr/lib/systemd/systemd-coredump
/usr/lib/systemd/systemd-coredump
--backtrace
systemd-coredump@.service
systemd-coredump.socket
描述
systemd-coredump@.service
是一个系统服务,它能从操作系统内核中获取内存转储,并能对获取到的数据进行各种处理。该服务的功能实际由 systemd-coredump可执行程序实现,该程序被先后调用两次:第一次被操作系统内核作为内存转储处理器调用;第二次被 systemd-coredump@.service
服务调用,用于将获取到的数据写入文件或日志中。
当操作系统内核调用 systemd-coredump 来处理内存转储时,它将以特权模式运行,并连接到systemd-coredump.socket
单元创建的套接字上,接着再派生一个非特权模式的systemd-coredump@.service
实例来处理所获取的内存转储。可见,systemd-coredump.socket
与 systemd-coredump@.service
是为了实现对内存转储进行统一管理而专门设置的辅助单元。
内存转储既可以保存到日志中,也可以保存到单独的文件中,以便于将来被例如gdb(1) 这样的工具做进一步的分析和处理。
默认情况下,systemd-coredump 会把内存转储事件以及可能存在的回溯(backtrace)保存到日志中,同时把内存转储自身的数据(内存镜像)保存到外部的/var/lib/systemd/coredump/
目录中。
进程在接收到信号后的行为取决于某些特定的因素(详见core(5) 手册),特别需要注意的是,仅在相关系统资源充足且未超出资源限制的前提下,才会进行内存转储操作。
如果在调用 systemd-coredump 时使用了--backtrace
选项,那么在 systemd-coredump的标准输入(STDIN)上必须存在一条符合Journal Export Format格式的日志,这条日志必须包含一个 MESSAGE=
字段,并且任何其他元数据字段在调用者看来都必须是合情合理的。 systemd-coredump将会按照它自己从内核中接收内存转储的方式,在这条日志中添加额外的元数据字段。注意,在这种模式下,内存转储将不会保存在日志中。
配置
对于被 systemd 进程启动的程序来说,可以通过LimitCore=
指令来设置资源限制,详见systemd.exec(5) 手册。
为了被操作系统内核用作内存转储处理器,systemd-coredump 必须被配置到sysctl(8)的 kernel.core_pattern
变量中。此变量的语法详见core(5) 手册。systemd 安装的 /usr/lib/sysctl.d/50-coredump.conf
文件就依据该语法配置了kernel.core_pattern
变量的默认值。如果想要使用不同的配置,那么可以根据sysctl.d(5)规则来屏蔽或覆盖此文件。修改 sysctl 配置之后,必须要刷新内核参数才能真正生效,详见sysctl(8)与systemd-sysctl.service(8) 手册。
如果想要以 --backtrace
模式运行,那么必须在发送端安装一个适当的回溯处理程序(backtracehandler)。例如,对于python(1) 来说,这就意味着必须安装一个 sys.excepthook
钩子,详见systemd-coredump-python 手册。
systemd-coredump 自身的行为由/etc/systemd/coredump.conf
配置文件与对应的/etc/systemd/coredump.conf.d/*.conf
配置片段共同决定,详见coredump.conf(5) 手册。因为每发生一次内核转储都会调用一个 systemd-coredump 新实例,所以,这些配置文件的变化将会立即体现在下一次内核转储调用调用的新实例上。
内核转储文件所占用的磁盘资源受两种不同方式的约束:(1)占用磁盘空间的大小受 /etc/systemd/coredump.conf
配置文件以及对应的配置片段的约束;(2)占用磁盘时间的长短受 systemd-tmpfiles 配置的约束(对应的配置文件默认位于 /usr/lib/tmpfiles.d/systemd.conf
)。
禁止处理内核转储
如果想要避免 systemd-coredump 在处理内核转储时对系统资源的大量占用,那么可以将
Storage=none ProcessSizeMax=0
写入coredump.conf(5) 中。
用法
存储在日志中的数据,可以按照常规使用journalctl(1)进行查看。coredumpctl(1)可以用于提取已保存的内存转储,而不必关心实际的保存方式与位置。如果想要显示相关信息或做进一步处理,可以将输出内容管道传递给例如 gdb 这样的工具。
参见
coredump.conf(5),coredumpctl(1),systemd-journald.service(8),systemd-tmpfiles(8),core(5),sysctl.d(5),systemd-sysctl.service(8).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论