我最近将系统升级到 openSUSE 13.1。我们正在通过 xinetd 在系统上运行定制服务,并且在旧的 xinetd 初始化脚本中,ulimit -c unlimited
在启动 xinetd 之前有一行代码来启用核心转储。由于 openSUSE 13.1 使用 systemd,这不再起作用。
systemd-coredumpctl
即使有确认崩溃的内核日志消息,也找不到任何核心转储。从 bash 手动启动服务,然后发送 SIGSEGV 确实会在我们配置的目录中创建核心转储。如何恢复我的核心转储?
事实证明 systemd 支持在配置文件中设置限制,这些信息只是分散在各个手册页中。根据systemd.exec,核心转储创建/文件大小的限制是使用 LimitCORE 设置的。此外,可以修改单元/服务配置,而无需修改系统提供的配置文件。ArchLinux Wiki中的更多信息。
/etc/systemd/system/xinetd.service.d/core.conf
因此创建具有以下内容的文件(和父目录)然后执行
激活创建核心转储所需的更改。