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.
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 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.
/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).
/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.
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!