systemd: obtenha os dumps principais para o serviço iniciado por xinetd

4

Eu recentemente atualizei um sistema para o openSUSE 13.1. Estamos executando um serviço customizado no sistema através do xinetd, e no antigo script de init xinetd havia a linha ulimit -c unlimited antes de iniciar o xinetd para habilitar os core dumps. Como o openSUSE 13.1 usa o systemd, isso não funciona mais.

systemd-coredumpctl não encontra nenhum dump principal, mesmo que existam mensagens de log do kernel que confirmem as falhas. Iniciando o serviço manualmente a partir do bash e enviando-o, o SIGSEGV cria um dump principal no diretório que configuramos. Como obtenho meus core dumps de volta?

    
por sjaensch 18.03.2014 / 14:47

1 resposta

4

Acontece que o systemd suporta a configuração de limites nos arquivos de configuração, as informações são apenas espalhadas por várias páginas do manual. De acordo com systemd.exec , o limite para a criação do arquivo principal / tamanho do arquivo é definido com LimitCORE. Além disso, é possível modificar uma configuração de unidade / serviço sem ter que modificar o arquivo de configuração fornecido pelo sistema. Mais informações no ArchLinux Wiki . Então, criando o arquivo (e o diretório pai) /etc/systemd/system/xinetd.service.d/core.conf com o seguinte conteúdo

[Service]
LimitCORE=infinity

e depois executando

# systemctl daemon-reload
# systemctl restart xinetd

ativou as alterações necessárias para criar despejos principais.

    
por 19.03.2014 / 12:18