Não coredumps para daemons iniciado no boot por init.d no Ubuntu

7

Como posso obter daemons iniciados pelo init.d na inicialização do coredump no Ubuntu? Isto é o que eu fiz até agora ...

echo "ulimit -c unlimited" >> /etc/profile
mkdir /corefiles/
chmod 777 /corefiles/
echo "kernel.core_pattern=/corefiles/core.%e.%u.%t" >> /etc/sysctl.conf
echo "fs.suid_dumpable=1" >> /etc/sysctl.conf
echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf
sysctl -p

Isso funciona muito bem para tudo, exceto um daemon que é iniciado pelo init.d na inicialização. Estou executando o Ubuntu 10.04. Eu estou procurando uma solução que não envolve a edição de cada daemons init.d arquivo.

EDIT: Além disso, daemons começaram com sudo não coredump.

    
por user16517 24.08.2010 / 19:13

4 respostas

4

Por que não usar o Suporte ? Ele está desabilitado por padrão em versões não relacionadas ao desenvolvimento do Ubuntu, mas ainda é instalado por padrão no AFAIK.

    
por 25.08.2010 / 07:28
1

/etc/profile é executado quando um usuário efetua login em uma sessão interativa (e, mesmo assim, isso depende do método de login e do shell de login). Não tem efeito nos daemons iniciados na inicialização.

Aparentemente (eu não testei para confirmar) os core dumps começam desativados no Ubuntu 10.04. Eles podem ser ativados definindo um limite de tamanho diferente de zero em /etc/security/limits.conf . Veja os comentários nesse arquivo e a página limits.conf man para mais informações. Eu acho que você vai querer adicionar uma linha como

*  soft  core  2000000

Programas que têm privilégios elevados geralmente não despejam o núcleo (eu não sei a regra exata em cima da minha cabeça). Isso pode afetar os processos iniciados diretamente por meio da elevação de privilégios, como sudo foo ; tente sudo sh -c foo (para que o processo filho inicie em seu nível de privilégio final).

    
por 24.08.2010 / 23:30
1

/etc/profile é originado apenas pelo seu shell de login, não por initscripts.

/etc/security/limits.conf também afetará apenas as sessões de login, pois esses limites são definidos por pam_limits.so ; de pam_limits manpage:

The pam_limits PAM module sets limits on the system resources that can be obtained in a user-session.

Para obter o comportamento desejado, modifique o script e insira o comando ulimit -c unlimited . Como Dom mencionou, você também pode fazer isso editando a biblioteca lsb init-functions.

    
por 25.08.2010 / 02:25
0

Acho que todas essas opções são necessárias para os daemons que você inicia. Para ter os dumps principais, você deve adicionar o comando ulimit ao início dos lançadores. Os Launchers devem usar / lib / lsb / init-functions . Então você pode modificá-lo como quiser. Eu não testo nada aqui, então tente!

    
por 24.08.2010 / 19:21