Недавно я обновил систему до openSUSE 13.1. Мы запускаем в системе специально созданную службу через xinetd, а в старом сценарии инициализации xinetd была строка ulimit -c unlimited
перед запуском xinetd для включения дампа ядра. Поскольку openSUSE 13.1 использует systemd, это больше не работает.
systemd-coredumpctl
не находит дампов ядра, хотя есть сообщения журнала ядра, подтверждающие сбои. Запуск службы вручную из bash и последующая отправка ее SIGSEGV создает дамп ядра в настроенном нами каталоге. Как мне вернуть свои дампы ядра?
Оказывается, systemd поддерживает установку ограничений в файлах конфигурации, информация просто разбросана по различным страницам руководства. В соответствии с systemd.exec, ограничение на создание дампа ядра / размер файла устанавливается с помощью LimitCORE. Кроме того, можно изменить конфигурацию модуля / службы без изменения предоставленного системой файла конфигурации. Больше информации в ArchLinux вики. Итак, создав файл (и родительский каталог) /etc/systemd/system/xinetd.service.d/core.conf
со следующим содержанием
[Service]
LimitCORE=infinity
а затем выполнение
# systemctl daemon-reload
# systemctl restart xinetd
активировал изменения, необходимые для создания дампов ядра.