我最近将系统升级到 openSUSE 13.1。我们通过 xinetd 在系统上运行定制服务,在旧的 xinetd init 脚本中,ulimit -c unlimited
在启动 xinetd 之前有一行用于启用核心转储。由于 openSUSE 13.1 使用 systemd,因此这不再有效。
systemd-coredumpctl
尽管有内核日志消息确认崩溃,但找不到任何核心转储。从 bash 手动启动服务,然后向其发送 SIGSEGV 确实会在我们配置的目录中创建核心转储。如何找回我的核心转储?
答案1
事实证明,systemd 支持在配置文件中设置限制,但这些信息分散在各个手册页中。根据systemd.exec,使用 LimitCORE 设置核心转储创建/文件大小的限制。此外,可以修改单元/服务配置,而无需修改系统提供的配置文件。更多信息请参见ArchLinux 维基/etc/systemd/system/xinetd.service.d/core.conf
.因此创建具有以下内容的文件(和父目录)
[Service]
LimitCORE=infinity
然后执行
# systemctl daemon-reload
# systemctl restart xinetd
激活了创建核心转储所需的更改。