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
активировал изменения, необходимые для создания дампов ядра.