Há algum tempo atrás, ainda em Manaus, lembro-me do Thiago perguntando “Existe algo como uma variável de ambiente COREDUMP_DIR?” Após alguma discussão sobre a viabilidade e uma rápida pesquisa, ele mesmo descobriu que não só é possível especificar um diretório, mas também onde e com que nome o kernel 2.6 deve guardar os arquivos de core-dump.

Para isso basta gravar uma máscara em /proc/sys/kernel/core_pattern de até 64 caracteres usando as seguintes variáveis:

  %%  o caracter '%'
  %p  PID do processo
  %u  UID real do processo
  %g  GID real do processo
  %s  número do sinal que causou o dump
  %t  hora do dump (em segundos desde 00:00h de 1970-jan-01)
  %h  nome do host
  %e  nome do arquivo executável do processo

Já o arquivo /proc/sys/kernel/core_uses_pid, bem mais antigo e mantido por questões de compatibilidade, controla se os arquivos de core devem ter ou não anexados a seu nome o PID do processo, sendo ignorado caso %p seja usado no core_pattern.

Por exemplo, para ter a máscara /var/tmp/corefiles/%e-%t-sig%s.core, sem PID, basta executar:

echo /var/tmp/corefiles/%e-%t-sig%s.core > /proc/sys/kernel/core_pattern
echo 0 > /proc/sys/kernel/core_uses_pid

Ou melhor ainda, adicionar a /etc/sysctl.conf:

kernel.core_pattern=/var/tmp/corefiles/%e-%t-sig%s.core
kernel.core_uses_pid=0

Se seu ambiente é multiusuário ou você espera gerar cores de um mesmo nome de processo com uma frequência maior do que de uma vez por segundo, recomendo a máscara /var/tmp/corefiles/%e-%t-%p-sig%s.core.

Algumas dicas:

  • Lembre-se de deixar o diretório destino com stick-bit (chmod 1777) para que multiplos usuários possam ter seus cores guardados de maneira segura;
  • Se seus programas não estão gerando core, verifique seu ulimit (comando ulimit -c e configuração em /etc/security/limits.conf);
  • Pra testar, você pode usar um script bash contendo o comando kill -s SIGSEGV $$.

Mais informações em linux/Documentation/sysctl/kernel.txt

Posts possivelmente relacionados:

  1. Férias 2011! Destino: Europa
  2. Viagem à África do Sul: Port St Johns, Ceia de Natal e a Terra dos Milagres
  3. Modelo de build-system usando autotools
  4. 15 dias de Google Chrome: de volta ao Firefox

2 comentários para “Linux: configurando destino dos arquivos core”
  1. caio1982 disse:

    Essa dica foi massa, bookmarked :-)

  2. Luiz Junior disse:

    Olá Ademar, cheguei ao seu blog via algum link que fala mal da Vivax, li os posts, são antigos, um ano atrás, incrivelmente teria que te dizer que a internet por aqui mudou um pouco, eles finalmente trocaram aquelas redes coaxiais que tinham por fibra, enfim. Achei legal as dicas, e até achei coincidencia, atualmente estou em Manaus, na verdade sou daqui, mas estive em curitiba no periodo 2003 – 2006. Cursei Ciencia da Computacao na UFPR e tirei minhas certificacoes Conectiva e LPI :D (Na Elaborata). Sinto saudades daí … Ainda mais quando bate Maio, Junho e eu lembro do inverno.

  3.  
Comentar

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>