10.4. Criação e acesso a um depósito central de lixo com coredumpctl
A ferramenta coredumpctl
de systemd
pode agilizar significativamente o trabalho com lixões no núcleo da máquina onde ocorreu o acidente. Este procedimento delineia como capturar um despejo de núcleo de um processo não responsivo.
Pré-requisitos
O sistema deve ser configurado para usar
systemd-coredump
para o manuseio do núcleo de despejo. Para verificar isto é verdade:$ sysctl kernel.core_pattern
A configuração é correta se a saída começar com o seguinte:
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump
Procedimento
Encontre o PID do processo pendurado, baseado em uma parte conhecida do nome do arquivo executável:
$ pgrep -a executable-name-fragment
Este comando irá emitir uma linha na forma
PID command-line
Use o valor command-line para verificar se o PID pertence ao processo pretendido.
Por exemplo:
$ pgrep -a bc 5459 bc
Enviar um sinal de aborto para o processo:
# matar -ABRT PID
Verifique se o núcleo foi capturado por
coredumpctl
:Lista de coredumpctl de dólares PID
Por exemplo:
$ coredumpctl list 5459 TIME PID UID GID SIG COREFILE EXE Thu 2019-11-07 15:14:46 CET 5459 1000 1000 6 present /usr/bin/bc
Examinar ou usar o arquivo principal conforme necessário.
Você pode especificar o despejo do núcleo pelo PID e outros valores. Consulte a página do manual coredumpctl(1) para mais detalhes.
Para mostrar detalhes do arquivo principal:
$ coredumpctl info PID
Para carregar o arquivo central no depurador GDB:
$ coredumpctl debug PID
Dependendo da disponibilidade de informações de depuração, a GDB sugerirá comandos para execução, como por exemplo:
Falta de debuginfos separados, uso: dnf debuginfo-instalar bc-1.07.1-5.el8.x86_64
Para mais detalhes sobre este processo, ver Seção 7.4, “Obtendo pacotes de debuginfo para uma aplicação ou biblioteca usando GDB”.
Exportar o arquivo principal para processamento posterior em outro lugar:
$ coredumpctl dumpl PID > /path/to/file_for_export
Substitua /path/to/file_for_export pelo arquivo onde você quer colocar o despejo do núcleo.