Назад | Перейти на главную страницу

systemd: получить дампы ядра для службы, запущенной xinetd

Недавно я обновил систему до 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

активировал изменения, необходимые для создания дампов ядра.