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

Я недавно обновил систему до openSUSE 13.1. Мы запускаем пользовательский сервис в системе через xinetd, а в старом скрипте инициализации xinetd была строка ulimit -c unlimited перед запуском xinetd для включения дампов ядра. Поскольку openSUSE 13.1 использует systemd, это больше не работает.

systemd-coredumpctl не находит дампов ядра, хотя есть сообщения журнала ядра, подтверждающие сбои. Запуск службы вручную из bash и ее отправка SIGSEGV создает дамп ядра в каталоге, который мы настроили. Как мне вернуть дампы ядра?

1 ответ

Решение

Оказывается, systemd поддерживает настройку ограничений в файлах конфигурации, информация просто разбросана по разным man-страницам. Согласно systemd.exec, предел для создания дампов ядра / размера файла устанавливается с помощью LimitCORE. Кроме того, можно изменить конфигурацию устройства / службы без необходимости изменения предоставленного системой файла конфигурации. Больше информации в ArchLinux Wiki. Таким образом, создание файла (и родительский каталог) /etc/systemd/system/xinetd.service.d/core.conf со следующим содержанием

[Service]
LimitCORE=infinity

а затем выполняет

# systemctl daemon-reload
# systemctl restart xinetd

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

Другие вопросы по тегам